[英]Combining multiple GIT repositories while preserving all tags/branches
我已經設法將多個GIT存儲庫中的分支合並到一個新的存儲庫中(使用“git filter-branch”和“git fetch / merge”的組合)。 但我似乎無法“合並”這些分支的標簽......這甚至可能嗎? 就我的(非常有限的)GIT知識而言,標記指的是單個提交,它本身由SHA1哈希值標識,該哈希值基本上是從所有先前提交中計算出來的。 由於來自不同存儲庫的分支沒有共同的祖先提交,我發現難以想象如何在一個新的和完全的上下文中仍然“有意義”(以GIT方式)重寫標記的方式無關的存儲庫。
有任何想法嗎 ?
編輯:澄清我打算做什么:
假設我有兩個名為“A”和“B”的存儲庫,我想將它們組合成一個名為“C”的新存儲庫。
目錄布局就像
A | |-someFileA |-anotherFileA |-...
B | |-someFileB |-anotherFileB |-...
並且組合的存儲庫應該是這樣的
C | |-A | |-someFileA | |-anotherFileA | |-... | |-B | |-someFileB | |-anotherFileB | |-...
標簽不是目錄(就像在Subversion中一樣),因此fetch / merge不會考慮它們。
另外,git fetch默認不提取所有標簽(除非指定了--tags
)。
考慮到標簽引用了不可變內容,並且您正在通過合並修改該內容,我認為您不能輕易地保留它們,除非您手動將類似名稱的標簽重新應用於您認為與原始標記類似的提交。
將這兩個回購“組合”的另一種較少侵入性的方法是將A
和B
聲明為C
子模塊 。
不涉及合並, A
和B
保留他們的分支和標簽
如果你想浪費幾個小時,我通過python和dulwich做了一些類似奇怪的回購管理。 這是一次性攻擊,但如果完成它是值得花幾個小時或時間,那就去吧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.