获取后Git合并 - 究竟如何?

时间:2013-01-25 00:19:52

标签: git

我从各种来源中读到,获取然后合并通常是一个更好的主意,而不是简单地拉动,因为它允许更精细的控制。也就是说,我还没有找到实际的方法。一个很好的例子:

我的一个GitHub存储库的主分支中的一些代码发生了一些小的改动。我能够获取它,但我不知道如何实际合并与我的本地主分支的差异。 git branch列出了我拥有的所有本地分支,但没有任何内容表明要合并的内容。

那么,它是git merge master还是git merge origin/master?我错过了什么?

4 个答案:

答案 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