将单独的git repos合并为一个

时间:2017-08-15 06:54:56

标签: git tfs

我可以用正确的方法来做这件事。我有一个TFVC风格的存储库,其中有几个分支。我想将整个事情移到git上。我正在使用git tfs(https://github.com/git-tfs/git-tfs)将TFVC内容导出到本地git repos,但历史太复杂,因此我无法一次导出所有分支。这本身并不是一个问题,因为我们也希望在此期间迁移到不同的分支策略。

该插件允许我使用的是将每个分支的历史子集导出到本地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

1 个答案:

答案 0 :(得分:1)

您基本上需要做的是创建一个新的中央存储库,它将成为此迁移的目标。

然后,将此存储库作为远程添加到每个单独的存储库中。然后你可以使用例如git push newrepo master:releases/release-abc。这会将“abc”仓库的主分支推送到新存储库的releases/release-abc分支。

完成所有单个存储库后,中央存储库将在其分支中进行所有更改。

请注意,根据git-tfs是否设法做到这一点,某些提交可能是“相同的”而没有相同的id(我不记得git-tfs是否正确且确定性地重建了提交)。在这种情况下,您可能需要事后清理以确保分支具有共同的祖先。你可以在这里使用变基法将它们正确地重新拼凑起来。