我有一些歷史重寫要做,爲此我想保留原始樹的完整性。然而,重寫的樹應該複製之前使用的標籤。有沒有比例如手動選項更少在分支名稱前加上標籤名稱?git:有沒有像每分支標籤?
7
A
回答
14
不,沒有什麼像git中的每分支標記。所有分支和標籤都只是Git中的參考類型; ref只是一個指向修訂歷史記錄中特定修訂版的名稱。舉例來說,如果你有devel
和master
分支機構,並v1.0
和v2.0
標籤,引用會是這個樣子:
refs/heads/devel -> * /\ * * <- refs/heads/master | | * * \/ * <- refs/tags/v2.0 | * | * <- refs/tags/v1.0 | *
正如你所看到的,沒有什麼搭售這些標籤的任何分支機構;實際上,所有這些標籤都包含在master
和devel
分支中。通過查看您的.git
回購庫,您可以看到實際上沒有更多的標籤結構。它只是一個包含引用.git/refs
內提交的SHA-1或.git/packed-refs
中的一行的文件(標籤經常位於packed-refs
中,因爲它們不經常更改,而分支通常是git/refs
內的單獨文件)。
所以,如果你想重寫歷史,並保留舊的標籤,你將不得不重寫你的標籤名稱。正如sehe指出的,這是通過使用git filter-branch --tag-name-filter
完成的。
1
您可以命名空間的標籤變成你想要的標籤(種)的分支命名的目錄屬於,而且不必進行手動:
git-thisBranch() { git symbolic-ref --short HEAD; }
git-localTag() {
local name="$1"; shift;
git tag $(git-thisBranch)/"$name" "[email protected]";
}
相關問題
- 1. git分支(沒有分支)
- 2. Git流發佈分支和標籤 - 有或沒有「v」前綴
- 3. 有沒有辦法使用git-svn鏡像Git repo到SVN並讓Git標籤/分支變成SVN標籤/分支?
- 4. git svn只使用沒有樹幹或標籤的分支
- 5. Git顯示沒有分支
- 6. Git標籤與分支
- 7. Git - 分支或標籤?
- 8. 將git分支轉換爲git標籤
- 9. git:開關分支沒有分離頭
- 10. Git標籤從主分支分離
- 11. 有沒有簡單的命令將分支轉換爲標籤?
- 12. 從沒有簽出的Git分支中移除文件?
- 13. 開關git分支沒有文件簽出
- 14. 如何在本地git分支中擁有與主分支不同的標籤
- 15. Git fetch沒有下載遠程分支
- 16. Git:新分支沒有被推動
- 17. 恢復(沒有分支)git提交
- 18. 新的Git倉庫沒有「主」分支
- 19. CruiseControl&Git沒有檢查分支
- 20. 沒有結帳分支的Git diff
- 21. 沒有提交的git分支
- 22. Git沒有遠程分支機構
- 23. 沒有歷史的git分支
- 24. 沒有提交的Git結帳分支
- 25. Git標籤和分支版本是?
- 26. 標籤vs git中的分支
- 27. 的Git分支/標籤名稱^ {}
- 28. 從clearcase標籤合併到git分支
- 29. 如何克隆git分支的標籤?
- 30. SVN Git分支/標籤/樹幹
......然後將其用'git filter-branch ..... --tag-name-filter cat'完成# – sehe 2011-04-18 14:41:45
@sehe:謝謝,這讓我想起改進[這個腳本](http://stackoverflow.com/questions/4278264/git -split-歷史的幾家,文件,到-A-獨立的分支/ 4283970#4283970) – 2011-04-18 14:55:45