我遇到了一个奇怪的情况:我已经将一个目录(本地存储库)从以前的开发人员复制到了我的机器上。远程主机有几个提交不在他的本地存储库中。
如何将本地主副本与远程主控的最新更改合并?
答案 0 :(得分:36)
如果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
所拥有的所有内容。
如果本地master
包含remote/master
不包含的提交,则必须弄清楚如何处理该提交。你想保留它们并将它们与remote/master
合并,还是只想把它们扔掉?
如果您想保留它们,可以使用merge
rebase
或master
本地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
如果您不想保留本地提交,只需将本地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章。