通过


将 Git 存储库移动到具有完全保真历史记录的另一个项目

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022

Git 徽标

如果你计划将多个 Azure DevOps 项目合并为一个项目,可能想知道应该如何处理所有的存储库:

  • 应该移动项目或合并项目吗?
  • 应保留历史记录还是仅保留最新项目?

先决条件

类别 要求
项目访问权限 项目的成员。
权限 - 查看私有项目中的代码:至少 基本 访问权限。
- 克隆或贡献代码到私有项目中:必须是“贡献者”安全组的成员或拥有项目中的相应权限。
- 设置分支或存储库权限: 管理权限 是分支或存储库的权限。
- 更改默认分支: 编辑策略 是存储库的权限。
- 导入存储库: 项目管理员 安全组的成员或 Git 项目级 “创建存储库 ”权限设置为 “允许”。 有关详细信息,请参阅 “设置 Git 存储库权限”。
Services 已启用存储库
工具 可选。 使用 az repos 命令: Azure DevOps CLI

注释

在公共项目中,具有 利益干系人 访问权限的用户具有对 Azure Repos 的完全访问权限,包括查看、克隆和参与代码。

类别 要求
项目访问权限 项目的成员。
权限 - 查看代码:至少 基本 访问权限。
- 克隆或贡献代码:参与者 安全组成员或具备项目中的相应权限。
Services 已启用存储库

方案是什么?

如图所示,需要将MigrationDemo存储库从FabrikamOld移动到Fabrikam新团队项目。

显示迁移仓库场景的屏幕截图。

如何移动?

您可以选择两种移动方式,具体如下所述。 导入功能更简单,但它仅在 Azure DevOps Services 和 Team Foundation Server 2017 Update 1 及更高版本中可用。

使用导入 Git 存储库功能

使用导入存储库功能时,可以从 Team Foundation Server、Azure Repos 或任何其他 Git 源代码提供程序(如 GitHub)将 Git 存储库导入到团队项目。 有关详细信息,请参阅 将 Git 存储库导入到项目

手动迁移 Git 存储库

创建空的 Git 存储库

从代码资源管理器中,选择存储库名称。 从列表中选择 “新建存储库 ”,选择 “Git ”作为类型,并为其命名。

显示创建新存储库的屏幕截图。

创建存储库后,将显示分步说明来帮助你入门。 将克隆 URL 复制到剪贴板。

显示用于添加新存储库信息的窗格的屏幕截图。

重要

如果计划从其他项目集合或外部 Git 存储库导入,请清除 提交注释选项中提到的工作项自动创建链接 。 否则,Azure DevOps 会将提交与团队项目集合中其他项目的现有工作项关联。

显示新存储库选项的屏幕截图。

镜像存储库

切换到MigrationDemoFabrikamOld开发人员命令提示符,并导航到本地(源)存储库的路径。 使用克隆 URL 运行 git clone --mirror 命令。 命令行为 git clone --mirror https://demo-fabrikam.visualstudio.com/DefaultCollection/Fabrikam/_git/MigrationDemo.

在这种情况下,该 clone --mirror 命令是冗余的,因为远程存储库是裸露的。 这里用作设置遥控器的一种安全且便捷的方法。

显示 Git 克隆命令已完成的屏幕截图。

推送存储库

git push运行以下命令,将本地更改推送到远程(目标)存储库。

显示 Git 推送命令已完成的屏幕截图。

--mirror 选项同时用于克隆和推送命令。 该选项可确保在新存储库中复制所有分支和其他属性。

验证新存储库

切换到 Azure DevOps Web 门户,并在 CODE 中心验证新的存储库和历史记录。

显示 CODE 资源管理器中的存储库验证的屏幕截图。

验证是否已将所有分支移到新存储库。

配置新存储库

验证是否已为新存储库正确配置权限和策略。 可以在创建空 Git 存储库或在此阶段后配置安全性。 重新配置构建以连接到新的存储库。 最后,通知原始存储库的用户,在 Visual Studio 中更新其远程设置,或者通过运行 git remote set-url origin 命令来完成更新。

> git remote set-url origin https://demo-fabrikam.visualstudio.com/DefaultCollection/Fabrikam/_git/MigrationDemo

重要

请记住,通过删除存储库(小心,没有撤消)或锁定分支来清理原始项目,以便没有人意外地更新它。

有关规划团队项目集合和团队项目的详细信息,请参阅 Azure IaaS 指南上的 TFS 规划、灾难恢复和恢复和 TFS