合并develop到master并推送后,develop同时超前落后master的原因及解决方法
出现同时超前落后的原因
出现这种提示的核心是两个分支的提交线已经分叉,各自持有对方没有的提交:
- 你执行
develop合并到master操作时,Git默认会在master分支生成1个新的合并提交,要是合并过程中解决过冲突,还会额外生成对应的修改提交,这些提交都只存在于master分支,所以develop会显示落后于master。如果你合并时用了squash merge(压缩合并),也会出现相同的情况,因为压缩合并生成的是全新的提交,不会继承develop的提交记录。 - 而
develop分支还存在1个从未被合并到master的提交,就会同时显示超前1个提交。
同步两个分支的操作方法
操作前先拉取远程最新内容,保证本地仓库和远程一致:
git checkout master git pull origin master git checkout develop git pull origin develop
方案1:保留develop的独有提交,双向合并同步
如果你需要保留develop上那个超前的提交,把master的内容合并回develop即可:
# 切换到develop分支 git checkout develop # 合并master的内容到develop git merge master
如果合并过程中出现冲突,解决完冲突后执行git add <冲突文件>和git commit即可,最后推送到远程:
git push origin develop
操作完成后两个分支内容完全同步,不会再出现超前落后的提示。
方案2:让develop完全和master对齐,丢弃独有提交
如果不需要保留develop上那个超前的提交,直接重置develop到和master一致即可:
git checkout develop git reset --hard origin/master git push -f origin develop
注意:
--hard参数会丢弃develop上所有未合并到master的修改,-f强制推送会覆盖远程develop的内容,操作前确认不需要保留独有修改再执行。
内容的提问来源于stack exchange,提问作者nulluisinverba
相关产品推荐
相关产品推荐

