在Git中将本地主分支与远程主分支合并

时间:2013-08-08 00:51:58

标签: git git-merge

我遇到了一个奇怪的情况:我已经将一个目录(本地存储库)从以前的开发人员复制到了我的机器上。远程主机有几个提交不在他的本地存储库中。

如何将本地主副本与远程主控的最新更改合并?

1 个答案:

答案 0 :(得分:36)

案例1:remote / master拥有本地主人拥有的所有内容

如果remote/master包含本地master包含的所有提交,只需执行git pull

git checkout master
git pull remote master

您可以使用以下内容检查本地master是否有remote/master未提交的内容:

git fetch remote
git log --oneline --graph remote/master..master

这将显示master中包含但remote/master中未包含的所有提交。如果您没有看到任何输出,则表示remote/master包含本地master所拥有的所有内容。

案例2:本地主人提交了远程/主人没有

的提交

如果本地master包含remote/master不包含的提交,则必须弄清楚如何处理该提交。你想保留它们并将它们与remote/master合并,还是只想把它们扔掉?

案例2a:merge / rebase local master提交到remote / master

如果您想保留它们,可以使用merge rebasemaster本地remote/master

git checkout master
git fetch <remote>

# Merge remote/master
git merge remote/master

# Or rebase local commits on top instead
git rebase remote/master

# Push the results
git push remote master

案例2b:丢弃本地主提交

如果您不想保留本地提交,只需将本地master硬重置为与remote/master相同的点:

git checkout master
git fetch remote
git reset --hard remote/master

文档

您可以从Git documentation了解有关所有这些命令的更多信息。我也强烈推荐优秀free online Pro Git book,尤其是第1-3和6-6.5章。