只存储在Git中的未上演的变化
我想要做以下的工作stream程:
- 添加更改到舞台。
- 把所有没有上演的变化藏起来。
- 在舞台上做一些东西(即构build,运行testing等)
- 应用藏匿。
有没有办法做第二步?
例
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
会要求你添加或不添加你的修改。
然后你只是回答y
或n
您可以像往常一样恢复工作目录:
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}”###✘不完全是你想要的
恢复未分离的变化。