我从开发中分支了一个功能。我对该功能分支进行了几次提交。然后,我合并了该功能分支,重新开发并把所有东西推到了原点。
我只是注意到git做了我不想要的快进。是否可以还原该合并?在git log中,没有提交合并的提交(执行操作时也没有要求我输入评论)。
如果有关系,自从我推动合并以来,什么都没有改变。
答案 0 :(得分:2)
如果您仍然具有功能分支,则可以执行以下操作:
警告:仅在您100%确定自从您要删除的提交以来开发上没有任何更改时,才应该执行以下操作。
在合并之前找到对development的最后一次提交的SHA。 (即合并之前的开发状态)
在开发分支上时执行以下操作:
git reset --hard <sha-of-old-develop>
执行
git push -f
现在,存储库应该恢复到合并之前的状态。
答案 1 :(得分:1)
根据定义,快进不具有合并提交:已执行的唯一操作是develop
分支的重定位。因此,您可以使用以下命令来还原该更新:
git checkout develop # Go back to develop
git reset --hard develop@{1} # Reset develop to its previous location
git push --force-with-lease origin develop # Push it, discarding the fast-forward
然后,如果要强制合并提交事件为空,请使用--no-ff
标志:
git checkout develop
git merge --no-ff feature/<x>