假设我已经进行了一些更改:
$ git diff --cached # few changes are stashed
+ change 1 new
blabla
- change 2 old
+ change 2 new
blabla
- change 3 old
+ change 3 new
blabla
$ git diff # no other changes
现在我想快速测试我的程序而无需更改2.使用git reset head -p; git stash
我可以完全摆脱变更2。但我不想取消它,这只是一个测试,我仍然想稍后提交它。因此,我想在工作目录中进行与更改2的更改相反的更改。结果应该是这样的:
$ git diff --cached # 1-3 changes are stashed
+ change 1 new
blabla
- change 2 old
+ change 2 new
blabla
- change 3 old
+ change 3 new
blabla
$ git diff #change 2 is undone
change 1 new
blabla
+ change 2 old
- change 2 new
blabla
change 3 new
blabla
我如何实现这一目标?
答案 0 :(得分:3)
您最大的问题之一来自于如果您的更改是独立的(ish),那么您应该首先独立地提交它们并将它们视为三个不同的提交。 IE,使用git commit --interactive
(或git add --interactive
)在3次更改提交中提交您的更改而不是1.这可以让您更轻松地使用git revert
或其他方式还原一个(如#2)改变管理魔术来处理你正在寻找的提交。