Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git从master拉入开发分支_Git_Branch_Pull - Fatal编程技术网

git从master拉入开发分支

git从master拉入开发分支,git,branch,pull,Git,Branch,Pull,我有一个名为dmgr2(开发)的分支,我想从主分支(实时站点)中提取,并将所有更改合并到我的开发分支中。有更好的方法吗? 以下是我在提交更改后的计划: git checkout dmgr2 git pull origin master 这应该会将实时更改拉到我的开发分支中,还是我弄错了?您列出的步骤会起作用,但有一种更长的方法可以为您提供更多选项: git checkout dmgr2 # gets you "on branch dmgr2" git fetch origin

我有一个名为dmgr2(开发)的分支,我想从主分支(实时站点)中提取,并将所有更改合并到我的开发分支中。有更好的方法吗? 以下是我在提交更改后的计划:

git checkout dmgr2
git pull origin master

这应该会将实时更改拉到我的开发分支中,还是我弄错了?

您列出的步骤会起作用,但有一种更长的方法可以为您提供更多选项:

git checkout dmgr2      # gets you "on branch dmgr2"
git fetch origin        # gets you up to date with origin
git merge origin/master
fetch
命令可以在
merge
之前的任何时候执行,也就是说,您可以交换提取和签出的顺序,因为
fetch
只会转到指定的远程(
origin
)并对它说:“给我所有我没有的东西”,即所有分支上的所有提交。它们会被复制到您的存储库中,但对于远程上名为
branch
的任何分支,它们的名称为
origin/branch

此时,您可以使用任何查看器(
git log
gitk
等)查看您没有的“他们有什么”,反之亦然。有时,这只对温暖模糊的感觉有用(“啊,是的,那实际上是我想要的”),有时它对完全改变策略有用(“哇,我还不想要那种东西”)

最后,
merge
命令接受给定的提交,您可以将其命名为
origin/master
,并尽一切努力将该提交及其祖先提交到运行
merge
时所在的任何分支。您可以插入
--no ff
--ff only
以防止快进,或者仅在结果为快进时合并(如果愿意)

使用序列时:

git checkout dmgr2
git pull origin master
pull
命令指示git运行
git fetch
,然后是道德上等同于
git merge origin/master
。因此,这与手工完成这两个步骤几乎是一样的,但是有一些细微的差别,可能对你来说并不太重要。(特别是由
pull
运行的
fetch
步骤只带来
origin/master
,并且它不会更新repo中的ref:1任何新提交都只会被特殊的
fetch\u HEAD
引用。)

如果您使用更明确的
git-fetch-origin
(然后可以选择环顾四周)和
git-merge-origin/master
序列,您还可以将自己的本地
master
与远程设备一起更新,只需在网络上运行一个
fetch

git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
比如说



1在git 1.8.4中,第二部分已经更改,我说是“固定的”,现在它会机会主义地更新“远程分支”引用。(正如发行说明所说,跳过更新是一个经过深思熟虑的设计决定,但事实证明,更多的人更喜欢git更新它。如果你想要旧的远程分支SHA-1,它默认保存在reflog中,因此可以从reflog中恢复。这还启用了一个新的git 1.9/2.0功能来查找上游回基。)情况:在我当地的分公司工作,但我喜欢在名为
dev
的开发分公司保持更新

解决方案:通常,我更喜欢做:

git fetch
git rebase origin/dev

场景

git checkout master    
git pull --rebase    
git checkout Mybranch    
git rebase master
git push -f origin Mybranch
我有母版更新和我的分支更新,我希望我的分支通过重定基来跟踪母版,为了正确跟踪所有历史记录,让我们将我的分支称为Mybranch

解决方案

git checkout master    
git pull --rebase    
git checkout Mybranch    
git rebase master
git push -f origin Mybranch
  • 需要根据情况和git提示,使用git mergetool&,git rebase--continue,git rebase--skip,git add-u解决所有冲突,直到解决所有冲突
(由Tzachi Cohen提供,更正到最后阶段,使用“-f”强制git在服务器上“更新历史记录”)

现在branch应该与master对齐并重新设置基础,同时使用remote updated,所以在git log中没有“behind”或“ahead”,只需删除所有本地冲突*.orig文件以保持文件夹“干净”

这对我来说很有效。 用于从master向我的分支获取最新代码


git-rebase-origin/master
git-pull-origin-master——允许不相关的历史记录

如果您的历史记录不匹配,您可能希望使用此选项,并且无论如何都要合并它


请参考如果您在功能-1分支上,并且您想拉主控--(可能是为了获得最新的合并更新/减少合并冲突的机会),请执行以下操作:

master拉入您的分支-不影响master

这将把你们两个分开以来进入大师的任何东西拉进你们的分支


如果您的分支已经公开,则可以这样做,因为它不会重写历史。

首先在dmgr2分支中提交所有更改。然后指向master 1.git checkout master,然后获取最新的更改2.git pull 3.git merge dmgr2 4.git push-u origin master,然后返回到您的dmgr2 5.git checkout dmgr2我已经将所有更改提交到dmgr2分支,很抱歉忘记添加,如果我执行步骤4,这会不会将我的开发更改推送到master?我不想这样做,所以你想说的是你想把更改从你的主分支带到你的开发分支?用
git checkout dev
切换到
dev
分支。然后,
git pull——重新设置原始主机的基址
。如果幸运的话,不会有冲突,dev将从master那里获得最新的更改。我只是想问一个朋友-你如何撤销这里的第一个代码块(checkout/fetch/merge)?@RichBradshaw:
git checkout
通常是非破坏性的,并且通常没有理由撤销
git fetch
,所以听起来像是在问如何撤销合并提交。答案与其他提交相同:要么
git reset
要么
git revert
。对于未发布的更改