我处于一种奇怪的情况:我已经将一个目录(本地存储库)从一个前开发人员复制到我的机器上.远程主机有几个提交不在他的本地存储库中.
如何将主服务器的本地副本与远程主服务器的最新更改合并?
小智 37
如果remote/master包含本地包含的所有提交master,只需执行以下操作git pull:
git checkout master
git pull remote master
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令检查本地master是否提交了remote/master不提交:
git fetch remote
git log --oneline --graph remote/master..master
Run Code Online (Sandbox Code Playgroud)
这将显示包含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
Run Code Online (Sandbox Code Playgroud)
如果您不想保留本地提交,那么只需将本地硬重置为与master以下相同的点remote/master:
git checkout master
git fetch remote
git reset --hard remote/master
Run Code Online (Sandbox Code Playgroud)
您可以从Git文档中阅读有关所有这些命令的更多信息.我也强烈推荐优秀的免费在线Pro Git书,尤其是第1-3和6-6.5章.