26

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

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

4

1 回答 1

49

案例1:remote/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

案例 2:本地 master 有远程/master 没有的提交

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

案例 2a:将本地 master 提交合并/rebase 到远程/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

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

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

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

文档

您可以从Git 文档中阅读有关所有这些命令的更多信息。我还强烈推荐优秀的免费在线 Pro Git 书籍,尤其是第 1-3 章和第 6-6.5 章。

于 2013-08-08T01:04:33.943 回答