我处于一个奇怪的情况:我已将前开发人员的目录(本地存储库)复制到我的机器上。已经有几个提交到远程主控不在他的本地存储库中。
如何将 master 的本地副本与远程 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
。
如果本地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 文档中阅读有关所有这些命令的更多信息。我还强烈推荐优秀的免费在线 Pro Git 书籍,尤其是第 1-3 章和第 6-6.5 章。