我有一個問題,它類似於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