假設我有五個修改過的文件,並且我將它們中的兩個放在了commit處(我們稱之爲commit A)。然後,我仍然有三個未提交的更改留給未來的提交。現在假設在將來某個時候我決定將我的工作目錄恢復爲提交A,那麼這些文件的狀態將不會提交給A,而是會被修改。這些變化會丟失嗎?Git階段和提交 - 恢復時未提交的文件會發生什麼?
回答
A git revert
只會修改正在恢復的commitA
的文件。
它不會觸及任何其他文件。
這就是說,這可能是一個好主意,以保存這些文件,只是爲了確保(git stash
)沒有發生任何事情「出錯」。
無論您當前的分段情況如何,提交'A'的'還原'僅會在頂部創建一個新的提交(例如A *),這會反轉提交A的影響。您需要啓動使用乾淨的工作目錄恢復進程(即隱藏或提交修改/暫存的文件)。
好吧,通過將更改恢復到索引來恢復工作。因此,如果沒有進一步確定實際發生的上演和未上演的變化,他們就不會「參與」,這似乎是過分簡單的。 – 2014-09-21 13:10:27
正確。實際上,如果存在任何分步或修改的文件(編輯我的答案),'git revert'將會被阻止。 – FractalSpace 2014-09-21 15:01:58
所以如果我理解正確,我的工作副本將被更改以反映提交A中的更改,但其他文件中的部分工作不會顯示出來?即無法恢復其他文件中的部分工作。這意味着在恢復之後,我的非工作副本並不是早期工作副本的確切複製。 (我明白我的期望可能並不完全可行......) – deepak 2014-09-21 15:38:50
- 1. 恢復git提交
- 2. Git:恢復舊的提交
- 3. Git恢復本地提交
- 4. GIT:恢復上次提交?
- 5. 爲什麼Git合併不會自動生成提交和提交消息?
- 6. MSMQ事務未提交/中止時會發生什麼?
- 7. Git更改沒有提交提交和未跟蹤文件
- 8. 從git分支留下的提交會發生什麼-D
- 9. Git - 恢復丟失的提交
- 10. 恢復git中的一系列提交
- 11. 恢復git中的多次提交
- 12. 什麼時候使用XA數據源和兩階段提交
- 13. 告訴Git提交是否合併/恢復提交
- 14. 如何恢復從git提交更改?
- 15. Git + Intellij - 如何恢復本地提交?
- 16. 恢復丟失遠程git提交
- 17. 從多個git rebases恢復「舊提交」
- 18. 如何恢復本地提交git
- 19. Git合併主無需恢復提交
- 20. 恢復Git倉庫/提交等
- 21. Oracle RMAN備份中未提交的事務會發生什麼
- 22. 如果未提交,此SQL中的事務會發生什麼?
- 23. 未提交的sql語句會發生什麼?
- 24. Paxos vs兩階段提交
- 25. 在Oracle 10g中發佈提交語句時會發生什麼?
- 26. 從提交恢復特定文件
- 27. Spark任務集併發階段提交
- 28. 提交後使用Git恢復已刪除的文件夾
- 29. 使用Lucene NRT時提交時會發生什麼
- 30. 恢復git回購倒數第二次提交,同時拋棄上次提交
如果您在問題中使用特定命令而不是使用其他版本控制系統的隨機術語,會更好。我只能猜測你在說'git reset',你可以通過指定'--soft',' - mix'或'--hard'來明確地選擇索引和工作樹會發生什麼。 – 2014-09-21 15:08:44
同意; 「恢復」在Git中是一個精確的術語,但通常用於表示更多類似於該工具的新用戶的「重置」。你能描述一下你想要做的更詳細的事情嗎? – 2014-09-21 16:03:47
@EdwardThomson在這裏發表評論以及那些由FractalSpace提供的答案,我認爲我已經開始融合到這樣的理解:我一直在想的是git reset,而不是回覆。 – deepak 2014-09-23 13:26:45