我的項目有一個文件foo
,我一直在使用它並使用git
進行檢查。我只是做了一些重構,所以我不再需要該文件。如果我做git rm foo
,該文件是否仍然存在於較舊的提交中?我能否檢出一個較舊的提交併使用該文件?git rm是否刪除文件的所有歷史記錄?
14
A
回答
19
不,git rm
(加上提交)寫入反映文件不再存在的新樹。該文件的整個歷史記錄,包括創建,修改和最終刪除都存在於歷史記錄中。
6
否,git rm
將只從工作目錄中刪除文件並將該刪除添加到索引中。所以只有未來的提交會受到影響。以前的所有提交保持不變,當您從存儲庫中刪除文件時,歷史記錄將實際顯示。
一般來說,您之前提交的所有提交都是永久性的,所以您應該永遠不用擔心在提交歷史記錄時丟失提交。當然,有些事情可以刪除或更改以前的提交(如rebasing),但對於大多數事情,您都很安全。
5
您將能夠使用已知提交ID來檢出任何舊版本,其中包含所有狀態都屬於它,包括現在被刪除的文件。見例如git分支<branchname> <起點>其中起點是提交ID。你甚至不應該追蹤屬於當前分支的那個起點;提交ID應該是唯一的,因此它可以位於當前存儲庫已知的任何分支中。
您可以使用log命令檢查文件的歷史記錄;但它不適用於任何語法 - 對於1.7.7,我將發佈「git log-oldpath」而不是簡單的「git log oldpath」,否則它將無法區分路徑和修訂版本。對於其他一些「責備」的命令,即使這還不夠 - 應該檢查舊版本以啓動它。
相關問題
- 1. 從Git歷史記錄中刪除具有歷史記錄的特定文件
- 2. 在git中恢復已刪除的歷史記錄文件
- 3. 從git歷史記錄中刪除文件的某些內容
- 4. Git:從歷史記錄中刪除替換文件的提交
- 5. Git從歷史記錄中刪除大文件
- 6. Git/Bitbucket - 從整個歷史記錄中刪除文件/提交
- 7. 在git中刪除分支是否將其從歷史記錄中刪除?
- 8. 如何刪除已刪除的git子樹文件夾的歷史記錄?
- 9. 如何爲所有團隊成員刪除github歷史記錄
- 10. 如何取消刪除以前在git歷史記錄中刪除的文件?
- 11. 從git repo歷史記錄中刪除所有已刪除的文件w搜索命令
- 12. 刪除文件(歷史)
- 13. git - Blob/index文件歷史記錄
- 14. 刪除所有除從混帳歷史的某些文件夾
- 15. VSO git文件歷史中的「簡單歷史記錄(默認)」和「完整歷史記錄」有什麼區別?
- 16. 如何在不刪除Git歷史記錄的情況下從git存儲庫中刪除文件/文件夾
- 17. 無法從Git歷史記錄中刪除目錄
- 18. git從歷史記錄中刪除目錄
- 19. 如何從歷史記錄中刪除二進制文件?
- 20. 將所有未記錄的文件刪除到Git目錄中?
- 21. 如何從git存儲庫中刪除舊的歷史記錄?
- 22. 從git歷史記錄中刪除未使用的資產
- 23. 在SVN中移動文件是否刪除其修訂歷史記錄?
- 24. 在Git中獲取(可能已刪除)文件的歷史記錄/日誌
- 25. Git:刪除歷史記錄中名爲類似CLI選項的文件
- 26. git從分支中刪除一些文件的提交歷史記錄
- 27. 刪除瀏覽器歷史記錄
- 28. 如何刪除所有文件exept 2「with git rm」?
- 29. 如何從mercurial的歷史記錄中刪除大文件?
- 30. 在TFS中刪除包含歷史記錄的文件
第一個字是不是應該是?他問他能否從以前的提交中獲取文件?你的意思是說是!對? – PHcoDer 2016-09-02 18:25:26