2017-08-15 64 views
1

我可以使用正確的方式來執行此操作。我有一個TFVC樣式的存儲庫,其中有幾個分支。我想把整個東西都轉移到git上。我使用git tfs(https://github.com/git-tfs/git-tfs)將TFVC內容導出到本地git倉庫,但歷史記錄太複雜,因此我無法一次導出所有分支。這本身並不是一個問題,因爲我們也希望在此過程中遷移到不同的分支策略。將單獨的git回購合併爲一個

插件允許我將每個分支的歷史記錄導出到本地git倉庫。所以我最終獲得了本地的「master」回放,並且每個版本都存儲在TFVC中。

現在我想提交到一個新的git回購。主人應該進入一個新的主分支,併爲每個版本創建一個分支「releases/release-xyz」。我怎樣才能將每個本地倉庫的所有代碼+歷史記錄提交到新倉庫的正確分支?我發現了零碎的東西加入了一個遙控器,並推動了每個分支,但我想確保我在這裏沒有忘記任何東西。我不關心分支之間的合併歷史,只要每個分支本身的導出歷史都是完整的。

因此,出口結構:

folder A (master) 
folder B (release-abc) 
folder C (release-xyz) 

和目標結構:

repo/master 
repo/releases/release-abc 
repo/releases/release-xyz 
+3

基本上,創建一個新的回購協議,將該回購協議作爲遠程存儲庫添加到您的每個存儲庫。然後使用例如推送到新的回購。 'git push newrepo master:releases/release-abc' - 這會將主分支推送到新的repo的'releases/release-abc'分支。 – poke

+0

Jup似乎確實做了這個伎倆,我讓它變得更加複雜,然後它看起來應該是這樣。 – Jasper

+1

@poke感謝分享,你可以移動你的評論來回答。這也將有助於社區中的其他人。 –

回答

1

什麼你基本上需要做的就是創建一個新的中央存儲庫,這將是這種遷移的目標。

然後,將此存儲庫作爲遠程存儲庫添加到您的每個單獨存儲庫中。然後,您可以使用例如git push newrepo master:releases/release-abc。這會將「abc」回購的主分支推送到新存儲庫的releases/release-abc分支。

一旦完成了所有單個存儲庫,中央存儲庫將在其分支中進行所有更改。

請注意,取決於git-tfs是否能夠做到這一點,一些提交可能是「相同」,而沒有相同的ID(我不記得git-tfs是否正確並確定性地重建了提交)。在這種情況下,你可能需要清理後確保分支有共同的祖先。你可以在這裏使用rebasing來正確地修補它們。

相關問題