git选择性还原(相当于`git revert --patch`)

时间:2017-07-23 16:57:08

标签: git git-revert

是否有一种首选方法可以还原部分先前的提交,部分还原非分段更改(git checkout -p)并部分添加未分级更改(git add -p)?

即。我提交了几个(甚至很多)提交,其中包含有意和无意的更改,我希望有选择地还原其中一些更改,同时保留其他更改。

我目前的工作流程并不好玩:

git diff commit commit^ > selective.diff
cp selective.diff selective2.diff
nvim selective2.diff 
# change unwanted - to ' ' and remove unwanted +, then save
rediff selective.diff selective2.diff | rewrite selective2.diff
git apply selective2.diff

并祈祷修补程序

2 个答案:

答案 0 :(得分:5)

我只能想到像

这样的东西
git revert commit --no-commit
git reset # now the changes are unstaged
git add -p
...
git commit

但我不知道它是否比你的解决方案更实用。

答案 1 :(得分:5)

git revert --no-commit
git reset --patch     # with `--hard` if you're sure