我从各种来源中读到,获取然后合并通常是一个更好的主意,而不是简单地拉动,因为它允许更精细的控制。也就是说,我还没有找到实际的方法。一个很好的例子:
我的一个GitHub存储库的主分支中的一些代码发生了一些小的改动。我能够获取它,但我不知道如何实际合并与我的本地主分支的差异。 git branch
列出了我拥有的所有本地分支,但没有任何内容表明要合并的内容。
那么,它是git merge master
还是git merge origin/master
?我错过了什么?
答案 0 :(得分:39)
git merge origin/master
应该有效。由于master
通常是跟踪分支,因此您也可以从该分支执行git pull
,它将执行获取&为你合并。
如果master
上的origin
发生了本地更改但未在git rebase origin/master
上反映出来,您可能希望{{1}}确保您的提交“在最顶层”。
答案 1 :(得分:13)
我通常这样做:
git merge --ff-only @{u}
其中说,“只从上游跟踪分支进行快速合并。”这很好,因为如果它失败了,那么我知道我在master
上引入了一些不在上游的东西。我将别名设为ff
,只是为了更容易输入。
如果有更改,并且您只想合并它们,则可以执行以下操作:
git merge @{u}
哪个将合并到上游分支。但是,如果你想要一个更清晰的历史记录(并避免将“合并'来源/主人''变成'主''提交,那么你可能需要考虑变基:
git rebase @{u}
当然,在任何这些示例中,您都可以origin/master
代替@{u}
。
答案 2 :(得分:4)
命令
git pull $some_url
相当于
git fetch $some_url
git merge FETCH_HEAD
有关详细信息,另请参阅git-pull(1)手册页,尤其是说明的前两段。
答案 3 :(得分:0)
要获取特定分支:
1. git fetch <branch URL><branch name>
2. git pull = git fetch + git merge
3(a). git merge origin/master
现在,origin / master和master分支指向同一提交,并且您已与上游开发同步。
(OR)
3(b). git merge FETCH_HEAD