我有一個測試存儲庫,包含一個主分支和測試分支。我在測試分支做了一些改變,並做了測試分支的標記。然後我刪除了測試分支(不,我沒有和主人合併)。令人驚訝的是,當我嘗試使用之前做過的標籤簽出時,我能夠獲得之前刪除的測試分支(當然,在「分離頭」狀態下,在「無分支」中)。這怎麼可能?有人可以幫助我理解這一點嗎?能夠使用git標記恢復已刪除的分支
回答
操作後Git對象不會立即刪除(例如,它們可以用git reflog
恢復)。你必須明確地使用git gc
(它也調用git prune
)來手動刪除它們,或者等待一段時間來控制gc.pruneexpire
自動修剪它們(如果這是由gc.auto
啓用的)。
此外,只有在沒有引用它們的情況下才永久刪除對象,在這種情況下,您仍然有一個標籤,因此提交及其歷史記錄將被保留。
檢查此命令的輸出:
git log --oneline --decorate --graph --all
它會給你你的版本庫的概述,你在這裏看到的提交將不會被永久垃圾收集器刪除。
這意味着我創建的標籤是一個引用,如果是這種情況,當我使用標籤進行結賬時,爲什麼它簽出爲DETACHED HEAD狀態?根據我的理解,當HEAD沒有指向任何引用(標記或分支),但它指向提交哈希(提交的SHA1)時,會發生DETACHED HEAD狀態。你能幫我理解一下嗎? – Shunya
這是一個「獨立的頭」,因爲它不屬於任何分支,你刪除它。 – KurzedMetal
「致命:無法識別的參數: - 在線」? git 1.8.x,Win7 – Number8
- 1. 恢復已刪除的git分支中丟失的更改
- 2. Git:恢復已刪除的遠程分支
- 3. 恢復Git中已刪除的孤兒遠程分支?
- 4. 在Bitbucket上從遠程恢復已刪除的分支(git)
- 5. 如何恢復已刪除的git分支?
- 6. 能夠結帳已刪除的本地git分支,爲什麼?
- 7. 恢復已刪除的git存儲庫
- 8. GIT恢復已刪除的文件夾
- 9. 恢復分支git
- 10. 你能重新使用已刪除的Git分支名稱嗎?
- 11. 恢復PostgreSQL中已刪除的記錄
- 12. 從不同的git分支上的mysql db恢復已刪除的列
- 13. 在git中恢復已刪除的歷史記錄文件
- 14. 爲什麼無法在Git中從遠程恢復已刪除的分支?
- 15. git svn保存已刪除的分支
- 16. 刪除已經承諾的git分支
- 17. 如何修復已刪除的git commit分支或引用?
- 18. 如何恢復已刪除的分區?
- 19. 提交後使用Git恢復已刪除的文件夾
- 20. 恢復在CVS中刪除的分支
- 21. Git - 從本地和遠程恢復刪除的分支
- 22. 恢復幾個月前刪除的Git分支
- 23. 您可以在GitHub上恢復/恢復已刪除的分支多長時間?
- 24. 如何恢復已刪除的遠程分支
- 25. 如何在TFS中恢復已刪除的分支?
- 26. 恢復到git分支
- 27. Git重置並刪除分支沒有正常恢復
- 28. git - 恢復刪除svn分支而無需重讀svn歷史
- 29. 恢復GIT刪除Eclipse
- 30. 刪除Git分支
你期望什麼?當你爲一個提交標記時,你將能夠通過標記返回該提交,而不管它是否在任何分支上。 – knittl
@knittl,我來自CVS背景,我曾預料,一旦我刪除分支,在分支上提交的提交的標籤也將被刪除。 – Shunya
不,標籤是永久性的,並且與標籤垂直科。兩者都可以在Git中獨立存在。 – knittl