是否有一种首选方法可以还原部分先前的提交,部分还原非分段更改(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
并祈祷修补程序
答案 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