Git的。撤消工作目录中的分阶段更改,保持暂存区域不变

时间:2013-12-17 13:16:38

标签: git git-stage

假设我已经进行了一些更改:

$ 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

我如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

您最大的问题之一来自于如果您的更改是独立的(ish),那么您应该首先独立地提交它们并将它们视为三个不同的提交。 IE,使用git commit --interactive(或git add --interactive)在3次更改提交中提交您的更改而不是1.这可以让您更轻松地使用git revert或其他方式还原一个(如#2)改变管理魔术来处理你正在寻找的提交。