git - 将一些项目从一个用户帐户移动到另一个

标签 git tfs azure-devops migration tfvc

我将更换工作公司,但我会继续从事相同的项目。我在 Azure DevOps 上有一些项目使用 Git,另一个项目使用 TFVC。我使用过这些集成在 Visual Studio 上的源代码控制工具,我从未使用过控制台命令。

我想将包含某些项目(不是所有项目)的所有更改的源代码从一个帐户“复制”到另一个帐户。如果可以将 TFVC 迁移到 Git。我该怎么做?

最佳答案

TFVC

众所周知,TFVC 很难从一台服务器迁移到另一台服务器。有一些工具可以提供帮助,但 TFVC->TFVC 很难做到正确。由于您可以在 TFVC 中做一些在 Git 中做不到的事情,因此并不总是可以继承**所有*历史和**所有*分支。不过,一般来说,转移具有一些历史记录的主分支就足够了。

幸运的是,有了这个警告,TFVC->Git 就容易多了。从您当前的 Azure DevOps 帐户中,选择“导入存储库”选项:

enter image description here

您可以指定要导入最多 180 天历史记录的单个分支。对于大多数项目来说,这已经足够了。使用此路线无法导入多个分支,因此您需要先将您的工作集成到一个分支中,以防您有正在进行的项目。

enter image description here

这会将您的 TFVC 分支转换为 Git 存储库。您可以根据需要从不同的 TFVC 存储库导入不同的分支多次执行此操作,直到您的所有工作都在 Git 中。

Git

有多种方法可以将 Git 存储库从一个系统移动到另一个系统,但由于您使用的是 Azure DevOps,您可以使用相同的导入存储库选项让 Azure Repos 将数据从旧帐户直接导入到新帐户一个。

首先,您需要创建一个新的目标帐户(或者使用您现有的个人帐户(如果有的话))。然后使用相同的导入存储库选项,但这次来自您的新帐户。

enter image description here

输入您要迁移的存储库的克隆 URL,并提供您的 Git 凭证或个人访问 token :

enter image description here

这会自动将您的所有代码、分支、标签等 pull 入您的目标帐户和新的 Git 存储库。执行此序列的次数与您拥有 Git 存储库的次数一样多。


命令行方式

您也可以使用命令行执行相同的步骤:

Git

要克隆 repo 以进行迁移,请使用新的克隆并指定 --mirror 选项:

git clone https://dev.azure.com/{Org}/{Project}/_git/{Repo} --mirror

然后将所有内容推送到新帐户上的一个新的空 git 存储库中:

git push --mirror https://dev.azure.com/{NewOrg}/{NewProject}/_git/{NewRepo}

TFVC

对于 TFVC,您有一些工具可以将 TFVC 分支导入到 git 存储库中,同时还具有可选的历史记录。 git tfs 允许您执行这样的导出:

git tfs clone http://your-tfs-server:8080/tfs/your-collection $/your-tfvc-repo

此过程需要一些时间才能将您的变更集导入本地 git 存储库。之后,您可以将生成的 Git 存储库推送到新的目标 Azure DevOps 项目中:

git remote add target https://dev.azure.com/{NewOrg}/{NewProject}/_git/{NewRepo}
git push --all target

关于git - 将一些项目从一个用户帐户移动到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54861859/

相关文章:

git - 我应该为每个工作站生成新的 SSH key 对还是重复使用一个 key 对?

visual-studio - TFS 2012 : Change work item type

Azure DevOps REST API - 获取作业的代理池?

windows - 如何授予 Azure Devops 私有(private) Windows 代理访问 SupportedAPIs-x64.xml 的权限?

azure - Azure DevOps 中的应用程序服务名称显示未找到结果

php - 存储库部署和 Composer : what workflow?

git - 是否可以硬链接(hard link)本地 git 子模块存储库?

java - 如何从公开共享的 GitHub 中 stash 个人信息?

tfs - 源代码管理资源管理器显示挂起的更改,但在挂起的更改窗口中不显示

tfs - 将集合从TFS 2010迁移到TFS 2012