我的項目有一個文件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. Perforce刪除所有歷史記錄
- 4. TFS刪除文件的歷史記錄
- 5. 從GIT歷史記錄中刪除給定擴展名的所有文件
- 6. Git刪除文件歷史記錄中的一步
- 7. 在git中恢復已刪除的歷史記錄文件
- 8. Git:從歷史記錄中刪除替換文件的提交
- 9. git恢復刪除的文件及其更改歷史記錄
- 10. 從git歷史記錄中刪除文件的某些內容
- 11. 如何刪除github中的所有提交歷史記錄?
- 12. Git/Bitbucket - 從整個歷史記錄中刪除文件/提交
- 13. Git從歷史記錄中刪除大文件
- 14. 從git歷史記錄中刪除文件不起作用
- 15. 在git中刪除分支是否將其從歷史記錄中刪除?
- 16. 如何刪除已刪除的git子樹文件夾的歷史記錄?
- 17. 如何爲所有團隊成員刪除github歷史記錄
- 18. 如何取消刪除以前在git歷史記錄中刪除的文件?
- 19. 刪除文件(歷史)
- 20. 從git repo歷史記錄中刪除所有已刪除的文件w搜索命令
- 21. git - Blob/index文件歷史記錄
- 22. 克隆版本並刪除所有提交歷史記錄
- 23. 刪除所有除從混帳歷史的某些文件夾
- 24. Git還原已刪除的文件並保留文件歷史記錄
- 25. VSO git文件歷史中的「簡單歷史記錄(默認)」和「完整歷史記錄」有什麼區別?
- 26. 使用egit插件從git提交中刪除歷史記錄
- 27. 如何在不刪除Git歷史記錄的情況下從git存儲庫中刪除文件/文件夾
- 28. 從歷史記錄中刪除文件後的Rebase分支
- 29. 從Git歷史中刪除文件而不刪除文件
- 30. 是否可以刪除歷史記錄中的特定命令?
第一個字是不是應該是?他問他能否從以前的提交中獲取文件?你的意思是說是!對? – PHcoDer 2016-09-02 18:25:26