Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
不管软件项目是大还是小,都应尽快使用版本控制。 Azure Repos 支持两种类型的版本控制:
Git
和
Team Foundation 版本控制
(TFVC)。
我应该使用哪个版本控制系统?
Git 是新项目的默认版本控制提供程序。 应在项目中使用 Git 进行版本控制,并开始将现有的 TFVC 项目移至 Git。 TFVC 被视为功能完整。 Azure DevOps 将保持与 TFVC 的兼容性,但 Git 将获得所有未来投资。
可以在同一项目中将 TFVC 存储库与 Git 配合使用,由此如果需要集中式版本控制,以后添加 TFVC 很容易。 要为现有项目设置新的存储库类型,请
使用这些说明
。
Git(分布式)
Git 是一个分布式版本控制系统。 每个开发人员在其开发计算机上拥有源存储库的副本。 开发人员可在其开发计算机上提交每个变更集并执行版本控制操作(如历史记录和比较),无需网络连接。 分支是轻量型的。 当需要切换上下文时,你可以创建一个私有本地分支。 你可以从一个分支快速切换到另一个分支,以便在你的基本代码的不同变体之间变换。 随后,你可以合并、发布或处置分支。
Visual Studio、Azure DevOps Services 和 Azure DevOps Server 中的 Git 是标准 Git。 可以将 Visual Studio 与第三方 Git 服务结合使用,也可以将第三方 Git 客户端与 Azure DevOps Server 结合使用。
有关详细信息,请参阅
Git 和 Azure Repos
。
TFVC(集中式)
Team Foundation 版本控制 (TFVC) 是一个集中式版本控制系统。 通常,团队成员的开发计算机上的每个文件只有一个版本。 历史数据仅在服务器上维护。 分支是基于路径的,并且在服务器上创建。
TFVC 有两种
工作流模型
:
服务器工作区
- 在进行更改之前,团队成员公开签出文件。 大多数操作都要求开发人员连接到服务器。 该系统有助于锁定工作流。 采用这种工作方式的其他系统包括 Visual Source Safe、Perforce 和 CVS。 使用服务器工作区,可以纵向扩展为非常大的代码库,其每个分支有数百万个文件并包含大型二进制文件。
本地工作区 - 每个团队成员都具有最新版本的代码库副本,可按需脱机工作。 开发人员签入其更改并在必要时解决冲突。 采用这种工作方式的另一个系统是 Subversion。
有关详细信息,请参阅
什么是Team Foundation 版本控制?
从 TFVC 移到 Git
如果有现有的 TFVC 存储库,可以使用
git-tfs 工具
将其迁移到 Git 存储库。 借助该工具,只需几个命令即可
将 TFVC 存储库迁移到 Git 存储库
。
Git 和 TFVC 的功能
下表总结了 TFVC 和 Git 如何支持版本控制的主要功能。
团队成员可以在其开发计算机上并行更改文件。 在创建变更集时将其
上传(签入)
到服务器。 你可以随时上载更改。 但可能会因
冲突
而中断。
可以在签入
变更集
后更改其注释。 你可以将变更集链接到工作项,并将变更集与已完成的生成关联。
团队成员可以在其开发计算机上并行更改文件。 你可以单独在开发计算机上创建提交而不必将它们提供给团队。 准备就绪后,必须先拉取最新提交,然后再将提交上传(推送)到服务器。 拉取时,你可能被冲突中断。
你可以修改最新本地提交。 无法更改较旧的提交。 你可以将提交链接到工作项,并将提交与已完成的生成关联。
你可以从命令提示符修改和合并本地提交。
基于路径的分支主要用作长期存在的构造来隔离功能团队和发布之间的更改的风险。 团队成员通常会为其处理的每个分支设置不同的工作区。
每个分支中的更改彼此独立,因此不必在从一个分支切换到另一个分支之前签入它们。 同级分支之间的合并要求无基准合并。
你可以获取分支结构的可视化效果和你的变更集的合并位置。
请参阅
使用分支隔离 Team Foundation 版本控制中的风险
。
分支是轻量型的,并且与路径无关。 很多开发人员会为其编码的每个新功能创建一个分支,有时候每天创建一个。 你可以从一个分支快速切换到另一个分支,以便在你的基本代码的不同变体之间变换。 可以创建仅存在于开发计算机上的分支,并在准备就绪时共享它们。
必须在切换分支前提交、分支、储藏或撤消更改。 合并很简单,并且与分支所基于的提交无关。
你可以比较分支来了解哪些提交存在于哪些分支上。
请参阅
使用 Git 分支切换上下文、暂停工作和隔离风险
。
不会在客户端开发计算机上复制文件历史记录,因此只有连接到服务器时才能查看它们。 可以在 Visual Studio 和 Web 门户中
查看历史记录
。 你可以批注文件以了解更改行的人员以及更改发生的时间。
客户端开发计算机上复制了文件历史记录,即使未连接到服务器也能查看它们。 你可以在 Visual Studio 和 Web 门户网站中查看历史记录。 你可以批注文件以了解更改行的人员以及更改发生的时间。
由于你的团队将所有工作签入一个集中式系统,因此你可以确定哪个用户签入了
变更集
,并可以使用
比较
来查看其更改的内容。 查看文件时,可以对其进行
批注
,从而确定更改代码块的人员,以及更改时间。
可以确定推送提交的用户。 (所有人都可以将任何标识声明为作者或提交者。)可以使用历史记录、比较和批注来确定更改时间和更改的内容。
每个项目都在单个根路径(例如:$/FabrikamTFVC)下包含所有文件。 可以在文件级别
应用权限
。 可以
锁定文件
。
可以在 Web 门户上浏览文件,也可使用 Visual Studio 中的
源代码管理器
进行浏览。
项目仅存在于一台服务器上。
每个项目可以包含一个或多个 Git 存储库,每个 Git 存储库可以包含一个或多个分支。 可以应用的权限最高可细化到存储库或分支。 无法锁定文件。
你可以在 Web 门户网站上浏览文件。
可以将提交推送到多个远程存储库,例如推送到项目存储库和托管在 Azure 上的网站。