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

15

有没有一种更喜欢的方法可以回滚之前提交的某些部分,类似于部分还原未暂存更改(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个回答

11
我只能想到类似于以下的内容
git revert commit --no-commit
git reset # now the changes are unstaged
git add -p
...
git commit

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


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

你能否在用法上添加更多的注释吗?例如,我应该把相关提交的哈希放在哪里? - HappyFace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接