51

我从各种来源中了解到,获取然后合并而不是简单地拉取通常是一个更好的主意,因为它可以进行更好的控制。也就是说,我还没有找到真正的方法。一个例子:

在我的 GitHub 存储库的一个主分支中,对一些代码进行了一些小的更改。我能够获取它,但我不知道如何将差异与我的本地主分支实际合并。 git branch列出了我拥有的所有本地分支,但没有任何迹象表明要合并到任何地方。

那么,它只是类似于git merge masterorgit merge origin/master吗?我错过了什么?

4

4 回答 4

56

git merge origin/master应该管用。由于master通常是一个跟踪分支,您也可以git pull从该分支执行,它会为您执行提取和合并。

如果您的本地更改master未反映在 上origin,您可能需要git rebase origin/master确保您的提交是“在顶部”。

于 2013-01-25T00:24:28.443 回答
16

我通常这样做:

git merge --ff-only @{u}

其中说,“只从上游跟踪分支进行快进合并。” 这很好,因为如果它失败了,那么我知道我介绍了一些master不是上游的东西。我将其别名为ff,只是为了更容易输入。

如果有更改,而您只是想合并它们,您可以执行以下操作:

git merge @{u}

它将在上游分支中合并。但是,如果您想要更清晰的历史记录(并避免“将 'origin/master' 合并到 'master'”提交,那么您可能需要考虑改用变基:

git rebase @{u}

当然,您可以origin/master代替@{u}这些示例中的任何一个。

于 2013-01-25T02:04:21.113 回答
8

命令

git pull $some_url

相当于

git fetch $some_url
git merge FETCH_HEAD

另请参阅git-pull(1)手册页了解详细信息,尤其是描述的前两段。

于 2016-09-16T21:00:41.980 回答
0

要获取特定分支:
1. git fetch <branch URL><branch name>

2. git pull = git fetch + git merge

3(a). git merge origin/master origin/master 和 master 分支现在指向同一个提交,并且您与上游开发同步。

(或者)

3(b). git merge FETCH_HEAD

于 2020-07-11T06:35:12.527 回答