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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在保留所有历史提交的同时将Git存储库迁移到tfs Git相关的知识,希望对你有一定的参考价值。

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

答案

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

 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存储库相同。在下面,您需要(克隆)本地源代码,并且tfs中的git repo将成为远程。

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

然后将其作为远程添加到本地仓库。

git remote add tfs url/of/remote

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

git push --all tfs

以上是关于在保留所有历史提交的同时将Git存储库迁移到tfs Git的主要内容,如果未能解决你的问题,请参考以下文章

Git 如何迁移仓库并保留 commit 记录?

gitlab项目迁移保留所有历史记录,分支

从存储库历史记录中删除提交 [重复]

SVN 到带有提交历史的 GIT 迁移(使用 git svn)

git:清理 git 历史记录并仅在 master 中保留合并的提交

Git本地存储库提交导出