Git revert 2个提交,其中一个正在合并



我正试图恢复两次提交,第一次是合并提交,第二次是正常提交。

我面临的问题是,不使用-m的普通git revert不适用于合并提交。在我得到选项的地方,它只考虑最后一次合并提交,但我想恢复2次提交。

所以,这就是目前的结构:

commit HASH_ONE(HEAD -> Release_Stage, origin/Release_Stage)
Merge: merge_hash_one merge_hash_two
Author: 
Date:   
resolving merge conflict Branch_name
commit HASH_TWO(origin/PSP-8392, PSP-8392)
Author: 
Date:   
adding comment during kyc upload
commit HASH_THREE (origin/Release, origin/PSP-8594, Release)
Merge: merge_hash_one merge_hash_two
Author: 
Date:   
Merged in PSP-6887_new (pull request #411)
some commit message

所以,在这里,我想回到HASH_TREE,只使用git revert,因为我不能进行强制推送。

如果你只想在HASH_ONE上创建一个新的修订版,使项目的内容像在HASH_TREE中一样,那么可以很容易地这样做:

git checkout HASH_THREE # assuming that it is a revision ID... if it is a branch, use --detach so that it doesn't move
git reset --soft HASH_ONE
# all changes between HASH_ONE an HASH_THREE (moving backwards) will be in index ready to be committed
git commit -m "reverting to HASH_THREE"
# now you have a single revision on top of HASH_ONE that is taking you back to the content of HASH_THREE
# feel free to put a branch here and then check it out
git branch -f some-branch
git checkout some-branch

另一个相当简单的方法是使用不常用的日常命令:

git branch -f temp $( git commit-tree -p HEAD -m "Reverting to HASH_THREE" HASH_THREE^{tree} )

这将在一个新的修订版上创建一个临时分支,该修订版以当前分支为其父级,并且修订版的内容与HASH_THREE相同。然后,您可以合并该分支,以便您的分支移动到那里:

git merge temp

完成后,请随时删除temp分支。

相关内容

最新更新