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

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Git 徽标

如果计划将多个 Azure DevOps 项目合并为一个项目,你可能想知道:

  • 如何处理所有存储库?
  • 移动或合并它们?
  • 保留历史记录还是保留部分存储库?

在本文中,你将了解如何将 Git 存储库移动到另一个具有完全保真历史记录的项目。

方案是什么?

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

移动存储库方案

如何实现移动?

你有两个选项,如下所述。 导入功能更简单,但仅在 Azure DevOps Services 和 TFS 2017 更新 1 及更高版本中可用。

使用“导入 Git 存储库”功能

通过使用“导入存储库”功能,可以将 Git 存储库从 Team Foundation Server (TFS)、Azure Repos 或任何其他 Git 源代码提供商(如 GitHub)导入团队项目。 有关详细信息,请查看导入存储库文档

通过五个简单的步骤手动迁移 Git 存储库:

创建空 Git 存储库。

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

新建存储库

创建存储库后,你将看到用于快速入门的分步说明。 将 Clone URL 复制到剪贴板。

新建存储库信息

重要

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

“新建存储库”选项和链接警告

镜像存储库

切换到开发人员命令提示和 FabrikamOld 中 MigrationDemo 存储库的本地(源)存储库路径。 使用上面的克隆 URL 运行 git clone --mirror 命令。

命令行:git clone --mirror https://demo-fabrikam.visualstudio.com/DefaultCollection/Fabrikam/_git/MigrationDemo

如图所示,在本例中,clone --mirror 是冗余的,因为远程存储库是空的。 此处使用它作为一种安全、简单的方法来设置远程库。

Git Clone 命令完成

推送存储库

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

Git Push 命令完成

--mirror 选项与 clone 和 push 命令一起使用。 该选项可确保所有分支和其他属性都被复制到新的存储库中。

验证新存储库

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

CODE 资源管理器中的存储库验证

验证所有分支是否都已移至新存储库。

配置新存储库

验证是否为新存储库正确配置了权限和策略。 可以在步骤 1 之后或在此阶段配置安全性。 重新配置生成以连接新存储库。 最后,通知原始存储库的用户在 Visual Studio 中更新其远程库或运行 git remote set-url origin 命令。

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

重要

请记住,通过删除存储库(小心,没有撤消)或锁定分支来清理原始项目,这样就不会有人不小心继续更新它。

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

作者:Jesse Houwing、Mike Fourie 和 Willy Schaub | 与作者和 ALM DevOps Rangers 联系

(c) 2016 Microsoft Corporation。 保留所有权利。 本文档“按原样”提供。本文档中表达的信息和观点(包括 URL 和其他 Internet 网站引用)如有更改,恕不另行通知。 您自行承担其使用风险。

本文档未向您提供任何 Microsoft 产品中任何知识产权的任何合法权利。 您可为了内部参考目的复制和使用本文档。