提交后能否执行git pull origin master?分支状态异常该如何处理
问题解答
1. git pull origin master 能否解决分支落后的问题?
可以。git pull origin master 本质是先执行 git fetch origin master 拉取远程master的最新提交,再自动执行 git merge origin/master 将远程master的变更合并到当前分支。
你的当前分支比master落后5个提交、超前1个提交,执行这个命令后,远程master的5个提交会被合并进来,同时你本地超前的1个提交也会被保留。最终你的分支会包含master的所有最新提交,以及你自己的那1个提交,解决“落后”的状态。
不过默认情况下,这个操作会生成一个新的合并提交。如果你想要线性的提交历史,可以改用 git pull --rebase origin master,它会把你本地超前的1个提交“挪”到master最新提交的后面,避免额外的合并提交。
2. 涉及历史合并提交的冲突处理
如果最早的落后提交是分支合并操作,确实可能增加冲突概率,但处理逻辑和普通冲突一致,只是需要更仔细核对内容:
- 先预判冲突:先执行
git fetch origin master,然后用git diff 当前分支名 origin/master查看本地分支和远程master的差异,提前了解可能冲突的文件和内容,尤其是之前合并操作涉及的文件。 - 执行合并并处理冲突:当
git pull触发冲突时,Git会在终端提示冲突的文件,打开这些文件,你会看到Git标记的冲突区块:
手动修改这些区块,保留需要的内容,删除冲突标记。<<<<<<< HEAD 你本地分支的内容 ======= 远程master的内容 >>>>>>> origin/master - 完成合并:修改完所有冲突文件后,执行
git add 冲突文件名,然后执行git commit(如果是默认merge模式)完成合并;如果用的是rebase模式,执行git rebase --continue。 - 极端情况回滚:如果冲突处理到一半不想继续,可以执行
git merge --abort(merge模式)或git rebase --abort(rebase模式)回到合并前的状态,再重新规划合并方式。
内容的提问来源于stack exchange,提问作者Nicolas Gabriel
相关产品推荐
相关产品推荐

