恢复合并提交时1和2的重要性

时间:2017-02-17 09:53:32

标签: git git-merge git-revert

我遇到了一种情况,我需要在git中恢复我的一个合并提交。我使用了以下命令:

scrappy

现在git为上面的命令提供了另一个选项,如下所示:

git revert -m 1 [merge commit id]

我没有区分 1和2

使用的参考文献:https://www.christianengvall.se/undo-pushed-merge-git/

2 个答案:

答案 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