从主分支直接拉取以保持 git 功能分支与主分支同步

3
我在合并主分支和我的特性分支时遇到了问题。因此,我尝试了解git如何处理合并以及从主分支更新特性分支的最佳方法。我找到了两个解决方案。
第一个解决方案:
git checkout feature_branch
git merge master

第二个:
git checkout feature_branch
git pull origin master // Read: pull the changes from origin/master into my current local branch 'feature_branch'

我只读过第二个解决方案一次,而第一个则经常出现在我的视线中。由于 git merge 总是完成提交,我更喜欢第二个解决方案,但我想知道它是否真正按照应该的方式工作。
我会感激任何澄清。
2个回答

4
在第一种情况下,您将进入一个功能分支并拉取最新版本的本地主分支。这个主分支的版本可能与跟踪分支(origin/master)是否最近与远程交互过(fetch和merge)而不是纯粹的fetch有关。
在第二种情况下,基本上正在发生的是首先从远程获取主分支,并将其放置在您的“跟踪”分支(origin/master)中。然后将该版本合并到当前(开发)分支中。
有关git流程的更多信息,请参见git branch、fork、fetch、merge、rebase和clone,它们之间有什么区别?

3

一次 pull 操作其实就是一次 fetch 和一次合并;在这两个例子中,你都进行了一次合并,只不过第二个例子涉及到了一个额外的仓库。我认为它们之间没有太大的区别。

如果你的功能分支只属于你自己,你可以考虑将其基于 master 的最新版本进行变基(rebase),而不是合并 master 来合并来自 master 的更改。这样一来,你的功能分支就可以跟踪 master,同时在历史记录中不会出现合并操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接