为项目选择正确的版本控件
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018
不管软件项目是大还是小,都应尽快使用版本控制。 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 和 TFS 中的 Git 是标准 Git。 你可以将 Visual Studio 与第三方 Git 服务一起使用,也可以将第三方 Git 客户端与 TFS 一起使用。
若要了解详细信息,请参阅 Git 和Azure Repos。
TFVC (集中式)
Team Foundation 版本控制 (TFVC) 是一个集中式版本控制系统。 通常,团队成员的开发计算机上的每个文件只有一个版本。 历史数据仅在服务器上维护。 分支是基于路径的,并且在服务器上创建。
TFVC 有两个 工作流模型:
服务器工作区 - 在进行更改之前,团队成员公开签出文件。 大多数操作都要求开发人员连接到服务器。 此系统有助于锁定工作流。 采用这种工作方式的其他系统包括 Visual Source Safe、Perforce 和 CVS。 使用服务器工作区,可以纵向扩展到非常大的代码库,每个分支和大型二进制文件有数百万个文件。
本地工作区 - 每个团队成员使用最新版本的代码库的副本,并根据需要脱机工作。 开发人员签入其更改并在必要时解决冲突。 采用这种工作方式的另一个系统是 Subversion。
若要了解详细信息,请参阅 TFVC 概述
从 TFVC 迁移到 Git
如果有现有的 TFVC 存储库,可以使用 git-tfs 工具将其迁移到 Git 存储库。 借助该工具,只需几个命令 即可将 TFVC 存储库迁移到 Git 存储库 。
Git 和 TFVC 功能
需要更多帮助才能做出选择? 这些图表可能会有所帮助。
功能
TFVC
Git
更改
团队成员可以在其开发计算机上并行更改文件。 创建更改集时 ,将 (签入) 上传到服务器。 你可以随时上载更改。 但是,可能会因 冲突而中断。
签入 更改集 后,可以更改注释。 你可以将变更集链接到工作项,并将变更集与已完成的生成关联。
团队成员可以在其开发计算机上并行更改文件。 你可以单独在开发计算机上创建提交而不必将它们提供给团队。 准备就绪后,必须先拉取最新提交,然后才能将 (推送) 推送到服务器。 拉取时,你可能被冲突中断。
你可以修改最新本地提交。 你无法更改较旧的提交。 你可以将提交链接到工作项,并将提交与已完成的生成关联。
你可以从命令提示符修改和合并本地提交。
分支创建
基于路径的分支主要用作长期存在的构造来隔离功能团队和发布之间的更改的风险。 团队成员通常会为其处理的每个分支额外设置一个工作区。
每个分支中的更改彼此独立,因此在从一个分支切换到另一个分支之前,无需签入它们。 在同级分支之间合并需要无基合并。
你可以获取分支结构的可视化效果和你的变更集的合并位置。
分支是轻量型的,并且与路径无关。 很多开发人员会为其编码的每个新功能创建一个分支,有时候每天创建一个。 你可以从一个分支快速切换到另一个分支,以便在你的基本代码的不同变体之间变换。 可以创建仅在开发计算机上存在的分支,并在准备就绪时共享它们。
必须在切换分支前提交、分支、储藏或撤消更改。 合并很简单,并且与分支所基于的提交无关。
你可以比较分支来了解哪些提交存在于哪些分支上。
冲突解决
在获取、签入、合并或取消保留时,可能需要 解决冲突 。 你可以在 Visual Studio 中解决所有类型的冲突。
在拉取或合并时,你可能必须解决冲突。 可以在 Visual Studio 或命令提示符中解决内容冲突。
文件存储
你可以签入大型二进制文件。 你可能还希望结合使用 NuGet 或用作替代项。
可以像常规文件一样签入小型二进制文件。 使用大型二进制文件时,请使用 Git-LFS 将大型二进制文件存储在Azure Repos中。
历史记录
文件历史记录不会在客户端开发计算机上复制,因此只能在连接到服务器时查看。 可以在 Visual Studio 和 Web 门户中 查看历史记录 。 你可以批注文件以了解更改行的人员以及更改发生的时间。
客户端开发计算机上复制了文件历史记录,即使未连接到服务器也能查看它们。 你可以在 Visual Studio 和 Web 门户网站中查看历史记录。 你可以批注文件以了解更改行的人员以及更改发生的时间。
标记文件
可以从 Visual Studio 或命令提示符将 标签应用于 一个或多个文件的版本。 每个文件都可以为不同的版本应用标签。
你可以从命令提示符将标记应用于各个提交。 在 Visual Studio 历史记录窗口中查看标记。
回滚更改
可以 回滚一个或多个更改集
可以还原提交。
缩放
你可以快速开始小型项目。 可以纵向扩展到特大型项目,但必须事先计划模块化基本代码。 可以在项目中创建多个存储库。
服务器
功能
TFVC
Git
服务器
Azure DevOps Services,TFS
Azure DevOps Services、TFS 和 Git 第三方服务
警报
团队成员可以在提交推送到服务器时接收电子邮件警报。
可审核性
可以标识哪些用户推送了提交。 (任何人都可以声称任何身份为作者或提交者。) 你可以识别更改的时间以及使用历史记录、比较和批注更改的内容。
生成(由 TFBuild 自动执行)
可以使用所有 TFBuild 功能生成项目集合中所需的任何内容组合。
可以使用大多数 TFBuild 功能一次生成一个项目,一次生成一个或多个存储库。
代码评审
是;请参阅 Devops 开发人员生活中的一天:暂停工作、修复 bug 并执行代码评审。 对于更轻量级的讨论,还可以从 Web 门户评论和发送电子邮件。
是;请参阅 执行拉取请求。 有关更轻量级的讨论,还可以从 Web 门户评论和发送电子邮件。
文件
每个项目都包含单个根路径下的所有文件 (,例如: $/FabrikamTFVC) 。 可以在文件级别 应用权限 。 可以 锁定文件。
可以在 Web 门户中浏览文件,并在 Visual Studio 中使用 源代码管理资源管理器 。
项目仅存在于一台服务器上。
每个项目可以包含一个或多个 Git 存储库,每个 Git 存储库可以包含一个或多个分支。 可以应用的权限最高可细化到存储库或分支。 文件无法锁定。
你可以在 Web 门户网站上浏览文件。
可以将提交推送到多个远程存储库 (,例如,将提交推送到 Windows Azure 上托管的项目存储库和网站。
质量门
你可以使用 CI 生成、封闭签入生成和签入策略。
可以通过 分支策略使用 CI 生成和封闭签入生成。
客户端
功能
TFVC
Git
客户端软件
Visual Studio、Eclipse (与 Team Explorer Everywhere
Visual Studio、Visual Studio Code、Eclipse 和其他第三方工具
文件
可以在 Visual Studio 中使用源代码管理资源管理器或 Windows 文件资源管理器或命令提示符浏览文件。
你可以使用 Windows 文件资源管理器或命令提示符浏览文件。
管理开发计算机上的工作
更改、提交和分支页。
挂起工作
你可以 暂停我的工作页或搁置更改。
你可以创建分支(从 Visual Studio 或命令提示符)或储藏分支(从命令提示符)
Visual Studio 兼容性
可以使用所有受支持的 早期版本的 Visual Studio。
Visual Studio 2013+
还可以使用 Visual Studio 2012 Update 4 (还必须为 Git) 安装Visual Studio Tools。
Web 门户
你可以浏览基本代码(包括分支)、查看历史记录、批注和注释变更集和搁置集以及执行其他任务,如将基本代码的选定部分作为 .zip 文件临时下载。
你可以浏览基本代码、查看历史记录、比较分支、批注和注释提交以及执行其他任务,如将基本代码的选定部分作为 .zip 文件临时下载。
集成和迁移
功能
TFVC
Git
迁移路径