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

git selective revert (equivalent of `git revert --patch`)

是否有一种首选的方法来恢复之前提交的一部分,沿着部分恢复未暂存的更改(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

并祈祷补丁能够

我只能想到类似

git revert commit --no-commit
git reset # now the changes are unstaged
git add -p
...
git commit

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

git revert --no-commit
git reset --patch     # or `git checkout --patch` if you're sure