如何撤消和存储不是上一次提交的上一个提交?

时间:2019-10-03 12:56:57

标签: git

我想知道是否有可能。我进行了一些更改,commitA,然后进行了更多更改……commitBcommitC。现在我意识到我暂时不希望在代码中使用commitA,需要首先对其进行检查。

因此,我需要撤消该提交并将其存储以进行审查,然后再次提交。有没有简单的方法可以做到这一点?还是我应该手动还原这些更改,提交还原,然后再次引入并存储它们?

2 个答案:

答案 0 :(得分:2)

如果您已经共享提交,那么可以,最好将其还原,并在审核后稍后重新提交。如果还没有,则可以进行交互式变基。从干净的工作目录开始:

git rebase -i <commitA>^

文本编辑器将打开如下文件:

pick <commitA> some commit message...
pick <commitB> blah blah...
pick <commitC> blah blah...

将“选择”更改为“编辑”,保存并退出编辑器。将被自动检出。

git reset HEAD^
git stash -u
git rebase --continue

其余提交将不带。

进行重播。

请记住,如果以后的提交依赖于此,那么您将遇到合并冲突。


sbat在评论中指出;如果您决定还原,则无需手动撤消更改。您可以使用git revert命令。

答案 1 :(得分:1)

嗯.....我已经回答了这样的事情...假设某些分支指向了commitC

git checkout commitA
git reset --soft HEAD~
git stash save 'stashing commit A'
git rebase --onto HEAD commitA some-branch # get rid of commit A