我有一个名为dmgr2(开发)的分支,我想从主分支(实时站点)中取出并将所有更改合并到我的开发分支中.有一个更好的方法吗?提交更改后,这是我计划做的事情:
git checkout dmgr2
git pull origin master
Run Code Online (Sandbox Code Playgroud)
这应该将实时更改拉入我的开发分支,还是我有这个错误?
tor*_*rek 638
您列出的步骤将起作用,但有更长的方法可以为您提供更多选项:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
Run Code Online (Sandbox Code Playgroud)
该fetch命令可以在之前的任何时候完成merge,即你可以交换获取和结账的顺序,因为fetch只需转到指定的remote(origin)并对它说:"给我所有的东西,我不要",即所有分支机构的所有提交.它们被复制到您的存储库,但以远程控制的origin/branch任何分支命名branch.
此时,您可以使用任何查看器(git log,gitk等)来查看您没有的"他们拥有的",反之亦然.有时这只对温暖的模糊情感有用("啊,是的,这实际上是我想要的"),有时它对完全改变策略很有用("哇,我还不想要那些东西").
最后,该merge命令采用给定的提交,您可以将其命名为origin/master,并执行将该提交及其祖先引入的任何内容,以及运行时所处的任何分支merge.您可以插入--no-ff或--ff-only阻止快进,或仅在结果是快进的情况下合并,如果您愿意.
使用序列时:
git checkout dmgr2
git pull origin master
Run Code Online (Sandbox Code Playgroud)
该pull命令指示git的运行git fetch,然后道德等同git merge origin/master.所以这几乎与手工完成这两个步骤相同,但有一些微妙的差异可能对你不太关心.(特别是通过仅fetch运行的步骤运行,并且它不会更新您的仓库中的ref:1任何新的提交最多只能通过特殊引用引用.)pull origin/masterFETCH_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
Run Code Online (Sandbox Code Playgroud)
例如.
1这第二部分已被更改 - 我说"固定"-in git 1.8.4,现在机会性地更新"远程分支"引用.(正如发行说明所说,这是一个故意的设计决定,跳过更新,但事实证明,更多的人更喜欢git更新它.如果你想要旧的远程分支SHA-1,它默认保存在因此可以从reflog中恢复.这也启用了一个新的git 1.9/2.0功能来查找上游的rebase.)
Dr-*_*ket 28
如果您在 feature-1分支上并且想要拉取 master ——(也许是为了获取最新的合并更新/减少合并冲突的机会),请执行以下操作:
git pull
git merge origin/master
Run Code Online (Sandbox Code Playgroud)
将master拉入您的分支 - 不影响 master!
这会将自从你们两个分道扬镳后进入 master 的所有内容拉到您的分支中。
如果您的分支已经公开,那么这样做就可以了,因为它不会重写历史。
GM1*_*GM1 14
我有主更新和分支更新,我希望我的分支通过变基来跟踪主分支,以正确跟踪所有历史记录。让我们将我的分支称为 Mybranch:
git checkout master
git pull --rebase
git checkout Mybranch
git rebase master
git push -f origin Mybranch
Run Code Online (Sandbox Code Playgroud)
我需要根据情况和git提示解决所有与git mergetool、git rebase --continue、git rebase --skip和的冲突,直到一切都解决。git add -u
注意:对最后阶段的更正,由 Tzachi Cohen 提供,使用“ -f”强制 git 在服务器上“更新历史记录”。
现在,分支应该与 master 对齐并重新建立基础,也应与远程更新一致,因此git log没有“后面”或“前面”,我只需要删除所有本地冲突的 *.orig 文件以保持文件夹“干净” ”。
情况:在我当地的分支机构工作,但我喜欢在名为的开发分支中保持更新dev.
解决方案:通常,我更喜欢这样做:
git fetch
git rebase origin/dev
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您的历史记录不匹配并且无论如何都想合并它,您可能需要使用它:
\ngit pull origin master --allow-unrelated-histories\nRun Code Online (Sandbox Code Playgroud)\n有关详细信息,请参阅“ \xe2\x80\x9cfatal:拒绝合并不相关的历史记录\xe2\x80\x9d Git 错误”。
\n