在保留所有历史提交的同时将Git存储库迁移到tfs Git

时间:2017-12-19 13:39:17

标签: node.js git tfs migration

我需要将git存储库迁移到tfs git。 这是我第一次迁移,重要的是保持历史数据的完整性。任何想法怎么做?

3 个答案:

答案 0 :(得分:3)

如果要从遥控器推送所有标签,它们将不会从本地克隆传输,除非您已明确提取它们然后显式推送它们。这就是 - 镜像帮助。

 git clone --mirror source
 git push --mirror target

做魔术。 Full documentation can be found here。将远程添加到本地仓库并推送将推送当前分支及其历史记录,但它可能不会推送当前主存储库中的所有对象,并且如果它们不存在于您的本地克隆中,则不会推送所有标记和标签

导入存储库有帮助,因为它可以节省在本地执行并且可以直接从源提取,这比创建本地存储然后推送它要快得多。 It's supported in VSTS, TFS 2017u1+ and TFS2018。但它确实需要两台服务器之间的直接视线,可能需要您设置备用凭据或个人访问令牌。

本地克隆方法:

 LOCAL <- SOURCE
 LOCAL -> TARGET

导入存储库选项:

 TARGET <- SOURCE

答案 1 :(得分:0)

您使用的是哪个版本的TFS?如果您使用的是TFS 2017 Update1或更高版本,则可以直接在TFS中Import a Git repo

对于早期版本,您可以关注jessehouwing或Mark的回答。我个人认为git clone --mirror source它会好得多。

您也可以参考此主题:https://gist.github.com/niksumeiko/8972566

答案 2 :(得分:-1)

迁移到tfs git存储库与迁移到任何其他git存储库相同。在下文中,您需要(克隆)本地源代码,并且tfs中的git repo将成为远程。

首先,您找到遥控器的URL。您可以从TFS Web UI获取此信息;它应该在你第一次创建repo时得到的指令页面给你,或者如果repo已经存在于tfs中,你可以点击“clone”按钮获取URL。

然后将其作为遥控器添加到本地仓库。

Computer.where(id: Account.administrtor.group("accounts.computer_id").having("count(accounts.computer_id) = 1").pluck("accounts.computer_id"))

然后你把你的裁判推到遥控器; git会自动发送完整的历史记录。

git remote add tfs url/of/remote