在提交之前,我看到git diff
我做了一个我不想做的改变。有没有办法恢复这一改变?
我想我可以使用git add -p
提交我打算做的更改,然后结帐主人。有没有更好的方法,最好是一种不需要我提交的方式?
这是Kubuntu Linux 12.10上的Git 1.7.10.4。谢谢!
答案 0 :(得分:4)
git reset --patch
(或git reset -p
)可以满足您的需求。
documentation的相关位:
git reset(--patch | -p)[] [ - ] [...]
以索引和(默认为HEAD)之间的差异交互式选择帅哥。选择的帅哥与指数相反。
这意味着git reset -p与git add -p相反,即你可以用它来有选择地重置帅哥。请参阅git-add(1)的“交互模式”部分,了解如何操作--patch模式。
请注意,git reset
(在路径上应用)与git add
匹配 - 后者会分段文件或块,而前者会取消它们,因此git reset
支持--patch
选项就像git add
一样。
您可能还有兴趣了解git checkout --patch
(或git checkout -p
)。
答案 1 :(得分:2)
git checkout
也有-p
选项,基本上与-p
中的git add
相同,但相反。
只是做:
git checkout -p <path>
(如果你愿意,可以没有path
)
与git add -p
一样,您可以选择要进行哪些更改,在此处选择要还原的更改。
答案 2 :(得分:0)
我没有银弹要提交,但是当我有这样一个用例时,我会选择git gui
。我只需索引我需要的所有更改,然后还原不需要的更改。
这与git add -p
相同,但git gui
使操作非常整洁。