1

假设我进行了一些更改:

$ 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

我如何实现这一目标?

4

1 回答 1

3

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

于 2013-12-17T14:14:03.313 回答