我的git提交顺序如下:
commit A ==> commit B(merge master) ==> commit C ==> commit D
提交 B 用于拉出并合并主文件,之后,提交 C 和 D 用于添加/更改文件。每次提交都被远程推送。
但是,当提交 D 进行远程推送时,**主回滚**。然后我的分支有一些代码是从提交B(合并主服务器)获得的,当前主服务器没有,因此已经回滚了。
为了与母版保持一致,我再次拉并合并了母版,但没有任何效果。 那么有什么方法可以删除提交B(合并主文件)?之后,提交流程如下:
commit A ==> commit C ==> commit D.
每条建议都将不胜感激。
答案 0 :(得分:0)
鉴于该分支及其合并提交已被推送到远程并且已公开,我们应该谨慎行事,避免重写该分支的历史记录。一个安全的选择是还原合并提交B:
git checkout your_branch
git revert -m 1 <SHA-1 hash of B>
这假定您要跟随合并的第一个父对象。如果不是,请改用-m 2
。您可以检查git log
来验证第一父级是否紧随提交A。
请注意,此解决方案将在分支的顶部进行新的提交。要推送这些更改,正常的推送就足够了:
git push origin your_branch