我的问题:我愚蠢地对文件做了很多更改并立即将它们全部提交。
我已经意识到很多变化都是废话......但其中很多都很好。
如何有选择地还原部分更改?
答案 0 :(得分:2)
假设您之后没有提交任何其他内容,我会undo your commit,add whatever parts of the file you want using git add -p
,然后重新发送。
我很确定这应该有效
答案 1 :(得分:2)
使用git rebase -i
可以将先前的提交分成几部分,但它只能用于可以重写其历史记录的分支。操作顺序如下:
git rebase -i <commit>~1
<commit>
是您想要拆分的提交。在交互模式下,将pick
更改为edit
或e
以进行您想要破解的提交。然后关闭编辑器并让rebase继续。当rebase
到达受影响的提交时,它会暂停,允许您在此时进行任何您想要的修改。其中包括git reset HEAD <file>
取消暂停<file>
,git reset HEAD
取消所有内容,git checkout -- <file>
放弃工作目录中的更改。
从这里,您可以按自己喜欢的任何顺序提交更改。如果对多个提交最佳地提交对同一文件的多个更改,我建议git add -p
以交互方式添加补丁集。
最后,当你在破碎的提交中提交了你想要的所有内容,并准备让rebase继续时,只需发出git rebase --continue
。
如果您想避免重写历史记录,this answer会向您展示如何使用git revert --no-commit
来恢复部分提交。
答案 2 :(得分:0)