在没有合并提交的情况下恢复 git 合并
Revert git merge without a merge commit
我从开发中分支了一个功能。我在该功能分支上做了几次提交。然后我将该功能分支合并回开发并将所有内容推送到原点。
我刚刚注意到 git 快进了,但我并不真正想要。是否可以恢复该合并?在 git 日志中没有合并的提交(当我这样做时也没有要求我发表评论)。
如果重要的话,自从我推动合并以来没有任何改变。
如果您还有功能分支,您可以执行以下操作:
警告:只有当您 100% 确定自您要删除的提交以来开发上没有任何更改时,您才应该执行以下操作。
在合并之前找到 develop 上最后一次提交的 SHA。 (即合并前的 develop 状态)
在开发分支上执行以下命令:
git reset --hard <sha-of-old-develop>
执行
git push -f
现在存储库应该恢复到合并前的状态。
根据定义,快进没有合并提交:唯一执行的操作是 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>
我从开发中分支了一个功能。我在该功能分支上做了几次提交。然后我将该功能分支合并回开发并将所有内容推送到原点。
我刚刚注意到 git 快进了,但我并不真正想要。是否可以恢复该合并?在 git 日志中没有合并的提交(当我这样做时也没有要求我发表评论)。
如果重要的话,自从我推动合并以来没有任何改变。
如果您还有功能分支,您可以执行以下操作:
警告:只有当您 100% 确定自您要删除的提交以来开发上没有任何更改时,您才应该执行以下操作。
在合并之前找到 develop 上最后一次提交的 SHA。 (即合并前的 develop 状态)
在开发分支上执行以下命令:
git reset --hard <sha-of-old-develop>
执行
git push -f
现在存储库应该恢复到合并前的状态。
根据定义,快进没有合并提交:唯一执行的操作是 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>