我有一个问题,它类似于How to undo 'git add' before commit?,但有一个重要的区别:如何撤消“git add”保留以前的阶段版本? (是否该指数具有历史?)
背景:
我快一些代码正在生成的文件,我会完成后添加到我的存储库。生成这些文件的代码是新代码,并且在不断变化的过程中,所以我有时会多次运行它,并进行更改。
一路上,我将生成的文件添加到索引,所以他们将为最后的一个大提交做好准备。这也使我能够检查我的代码更改是否会在输出中创建更改,如果是这样,那些更改是什么。但是......我意外地在Changes to be committed
部分(作为new file
)和Changes not staged for commit
部分(如modified
)出现过的文件上意外地运行了另一个git add。我的意思是运行一个git diff,但我滑倒并重新添加它,所以现在我没有办法区别它(我知道),所以...
问题:
有没有办法撤消刚刚过去的分期手术,使得先前添加的版本仍然/同样可以在索引,修改后的文件将再次在我的工作树,让我可以区别吗?
所有这些都没有承诺或任何事情,因为我的目标是在完成这一小小一轮的开发时一起完成所有任务。我真的很喜欢git可以正常显示我对新文件的更改,然后他们承诺......但是......我错过了一个机会,现在想知道是否有办法让它恢复。 ?
到目前为止,我查找的东西似乎能够让我回到最后一次提交(无文件)或文件的当前状态(无论如何),但不是中间的从索引转到以前的版本,这从来都不是提交的一部分。任何暗示,即使这是否可能(甚至是一个坚实的答案,它不是,最好有解释为什么这种情况),将不胜感激。
如果您可以识别添加的时间窗口,并且在添加之前“最近添加”,如果您可以区分之后的内容,那么时间戳记对于回购对象文件可以提供帮助。 – jthill
是的,我同意,始终运行git commit永远不会伤害你。这就是git的意图。 –
谢谢。至于频繁的提交,这只发生在几秒钟的事情上,真的......我经常做相当*的提交,尽管经常做更多*,而使用--mend可能是有道理的。 --lost-found选项也可能有帮助,所以非常感谢!我已经开始了,但是这听起来可能会让我在当时想要的东西。谢谢。 – lindes