我遇到了一种情况,我需要在git中恢复我的一个合并提交。我使用了以下命令:
scrappy
现在git为上面的命令提供了另一个选项,如下所示:
git revert -m 1 [merge commit id]
我没有区分 1和2
使用的参考文献:https://www.christianengvall.se/undo-pushed-merge-git/
答案 0 :(得分:1)
git revert文档提供了类似
的语法git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…
因此-m
之后的数字代表父母数字
合并提交可能有两个父母说你考虑一个当前哈希是0ce2ca0b35f59af267241cf4d40d16a3e13ba6f3
并且有两个父母
df1acf5f54426d30f12c6b4558c3dd922297aae3
e19b912404ffd3c153ccac3072dbf22396896d2a
git revert -m 2 0ce2ca0b35f59af267241cf4d40d16a3e13ba6f3
将恢复为e19b912404ffd3c153ccac3072dbf22396896d2a
<强> Documentation 强>
答案 1 :(得分:0)
git存储库只是一个提交树。合并提交只是一个包含两个(或更多)父项的提交。
如果您使用单个父级还原提交,则只需撤消该提交所引入的更改。
但是,如果您要还原合并提交,则需要还原合并的分支中的所有更改。但是,没有合并哪个分支的真实概念 - 您只需拥有提交的父级,-m
告诉git你要将恢复到的父级(即撤消从其他父级引入的更改)
请参阅此处的文档:https://git-scm.com/docs/git-revert#git-revert--mparent-number