2017-08-15 66 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来正确地修补它们。

相关问题