我想知道是否有可能。我进行了一些更改,commitA
,然后进行了更多更改……commitB
,commitC
。现在我意识到我暂时不希望在代码中使用commitA
,需要首先对其进行检查。
因此,我需要撤消该提交并将其存储以进行审查,然后再次提交。有没有简单的方法可以做到这一点?还是我应该手动还原这些更改,提交还原,然后再次引入并存储它们?
答案 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