【发布时间】:2018-06-01 23:10:31
【问题描述】:
我需要将一个 git 存储库迁移到 tfs git。 这是我第一次迁移,保持历史数据完整很重要。知道怎么做吗?
【问题讨论】:
我需要将一个 git 存储库迁移到 tfs git。 这是我第一次迁移,保持历史数据完整很重要。知道怎么做吗?
【问题讨论】:
如果你想从远程推送所有标签,它们不会从本地克隆传输,除非你明确地把它们拉出来,然后再明确地推送它们。这就是 --mirror 的帮助。
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
【讨论】:
您使用哪个版本的 TFS?如果您使用的是 TFS 2017 Update1 或更高版本,则可以直接在 TFS 中Import a Git repo。
对于早期版本,您可以关注 jessehouwing 或 Mark 的回答。我个人认为git clone --mirror source 好多了。
你也可以参考这个帖子:https://gist.github.com/niksumeiko/8972566
【讨论】:
迁移到 tfs git 存储库与迁移到任何其他 git 存储库相同。在下文中,您需要(克隆)本地源 repo,tfs 中的 git repo 将成为远程。
所以首先你要找到遥控器的 URL。您可以从 TFS Web UI 获取此信息;它应该在您首次创建 repo 时获得的说明页面中提供给您,或者如果 repo 已经存在于 tfs 中,您可以单击“克隆”按钮获取 URL。
然后你将它作为远程仓库添加到本地仓库。
git remote add tfs url/of/remote
然后你将你的 refs 推送到远程; git 会自动发送完整的历史记录。
git push --all tfs
【讨论】:
git pull --mirror。或者,如果您的 TFS 版本已经支持,请使用 TFS 导入存储库功能