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

Ric*_*cky 18 git git-merge

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

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

小智 37

案例1:remote/master拥有本地主人拥有的一切

如果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拥有的所有内容.

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

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

情况2a:merge/rebase local master提交到remote/master

如果您想保留它们,您可以mergerebase局部masterremote/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)

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

如果您不想保留本地提交,那么只需将本地硬重置为与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章.