只存储在Git中的未上演的变化

我想要做以下的工作stream程:

  1. 添加更改到舞台。
  2. 把所有没有上演的变化藏起来。
  3. 在舞台上做一些东西(即构build,运行testing等)
  4. 应用藏匿。

有没有办法做第二步?

echo "123" > foo git add foo # Assumes this is a git directory echo "456" >> foo git stash cat foo # Should yield 123 

git stash save有一个选项--keep-index完全符合你的需求。

所以,运行git stash save --keep-index

 git stash save --keep-index 

另外,Re:

为什么不在升级之后提交更改? – Shin

答:因为你应该总是检查testing代码:)这意味着,你只需要运行testing, 只有你将要提交的变化

所有这一切,除了当然,作为一个有经验的程序员的事实,你有天生的冲动testing和审查这些变化 – 只是部分开玩笑

这可以通过3个步骤完成:保存分段更改,隐藏其他所有内容,通过分阶段更改恢复索引。 基本上是:

 git commit -m "~~~ saved index ~~~" git stash save -u git reset --soft HEAD~1 

这将做你想要的。

使用git version 2.7.4你可以这样做:

 git stash save --patch 

git会要求你添加或不添加你的修改。
然后你只是回答yn

您可以像往常一样恢复工作目录:

 git stash pop 

或者,如果您想保留保存的更改:

 git stash apply 

扩展以前的答案,我有时会有一系列复杂的变化,但是希望首先进行一个单独的变更。 例如,我可能发现了一个错误或其他不正确的代码,我想在我的阶段性更改之前修复。 一条可能的路线是:

先把所有东西都藏起来,但是保持上演的变化不变

$ git stash保存–keep-index [–include-untracked]

现在分开存放上演的变化

$ git存储保存

修改修复; 并testing; 提交他们:

$ git add [–interactive] [–patch]

$ git commit -m“修复…”

现在恢复以前的阶段性变化:

$ git stash pop

解决任何冲突,并注意,如果有冲突,GIT将已经应用,但不会丢弃顶部存储条目。

(…然后提交分阶段的更改,并恢复所有其他更改的存储,并继续…)

另一个提示,与这个问题有关:

当你有效地隐藏你的搁置更改使用

$ git stash保存–keep-index

你可能希望给一个消息一个消息,以便当你做一个git stash list ,更明显的是你之前git stash list的东西,特别是如果你通过进一步的存储来跟踪这个存储操作。 例如

$ git存储保存–keep-index“更改尚未上演”

(尽pipe实际上它包含了其他答案中提到的所有更改)。

例如,上面可能紧接着是:

$ git stash保存“functionX的暂存更改”

当心,但是,你不能再使用

$ git stash apply“stash @ {1}”###✘不完全是你想要的

恢复未分离的变化。