我从各种来源中了解到,获取然后合并而不是简单地拉取通常是一个更好的主意,因为它可以进行更好的控制。也就是说,我还没有找到真正的方法。一个例子:
在我的 GitHub 存储库的一个主分支中,对一些代码进行了一些小的更改。我能够获取它,但我不知道如何将差异与我的本地主分支实际合并。 git branch列出了我拥有的所有本地分支,但没有任何迹象表明要合并到任何地方。
那么,它只是类似于git merge masterorgit merge origin/master吗?我错过了什么?
git merge origin/master应该管用。由于master通常是一个跟踪分支,您也可以git pull从该分支执行,它会为您执行提取和合并。
如果您的本地更改master未反映在 上origin,您可能需要git rebase origin/master确保您的提交是“在顶部”。
我通常这样做:
git merge --ff-only @{u}
其中说,“只从上游跟踪分支进行快进合并。” 这很好,因为如果它失败了,那么我知道我介绍了一些master不是上游的东西。我将其别名为ff,只是为了更容易输入。
如果有更改,而您只是想合并它们,您可以执行以下操作:
git merge @{u}
它将在上游分支中合并。但是,如果您想要更清晰的历史记录(并避免“将 'origin/master' 合并到 'master'”提交,那么您可能需要考虑改用变基:
git rebase @{u}
当然,您可以origin/master代替@{u}这些示例中的任何一个。
命令
git pull $some_url
相当于
git fetch $some_url
git merge FETCH_HEAD
另请参阅git-pull(1)手册页了解详细信息,尤其是描述的前两段。
要获取特定分支:
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