git-推送后还原合并
我执行的步骤:
我有两个分支branch1和branch2,
$git branch --Initial state
$branch1
$git checkout branch2
$git pull origin branch1 --Step1
我解决了冲突,并做了
$git commit -m "Merge resolved"
然后
$git checkout branch1
$git merge branch2
$git push origin branch1
现在我意识到在第一步时,自动合并删除了一些代码并推送了更改代码,现在我想回到我的初始状态以还原任何更改。寻找一些即时帮助吗?
Bijendra asked 2019-11-14T08:49:21Z
3个解决方案
70 votes
您可以按照官方指南还原合并,但是这使Git误认为合并的提交仍在目标分支上。
基本上,您必须:
git revert -m 1 (Commit id of the merge commit)
21 votes
尝试使用git push -f
来查找分支在合并之前的位置,并尝试使用git reset --hard <commit number>
来还原旧版本。
Reflog将显示分支的较旧状态,因此您可以将其返回到您喜欢的任何更改集。
使用git reset时,请确保您在正确的分支中
要更改远程存储库历史记录,可以执行git push -f
,但是不建议这样做,因为有人可能已经下载了由您推送的更改。
3 votes
第一种选择是使用git revert
。
git revert -m 1 [sha-commit-before-merge]
git revert
将还原更改,但将保留历史记录。 因此,您将无法继续在同一个分支中工作,因为您再也看不到合并分支与功能分支之间的实际差异。也可以使用以下方式删除历史记录。 仅当您是当前唯一推动更改的分支时,请非常小心地执行此操作。
git reset --hard [sha-commit-before-merge]
git push [origin] [branch] --force