VSTS中版本控制系统Git与TFVC的区别

VSTS(Visual Studio Team Services)

VSTS简单说就是微软TFS(Team Foundation Services)的升级云版,不用像TFS须要在企业内部服务器上部署,而且是免费提供给用户使用的。html

每一个有微软帐号(也是免费注册的)的用户均可以申请VSTS,官网申请入口。固然,免费用户是有必定限制的,好比:每一个项目的成员不能超过5个等。不过通常中小型开发项目,5我的也够用了。git

VSTS有一点比GitHub好,免费用户也能够拥有private空间;GitHub上免费的都是公开的,全部人都能访问获取的。因此,既想要免费软件项目托管平台,又想要私有项目不公开,VSTS真是一个不错的选择。apache

VSTS功能比较多,做为微软云优先新时代的产品,应该会一直持续开发改进的。服务器

VSTS功能

VSTS支持两种版本控制系统:Git 和 TFVC(Team Foundation Version Control)

在VSTS中新建一个项目时,会遇到版本控制选择:less

Git是默认的版本控制系统,而且是官网推荐使用的,除非是有特殊需求(好比必定要用TFVC的集中式管控)。分布式

Git(分布式)

Git是分布式版本控制系统。分布式相比于集中式的最大区别在于每一个开发者在本地都有一份源码仓库的备份,开发者能够提交修改集到本地仓库,而且在断网的状况下也能执行历史回溯和比较的功能。Git的分支很是轻便,你能够在本地建立一个私有分支,而且也能够在本地合并分支。不存在中央服务器。不一样开发者之间只需把各自的修改推送给对方,就能够互相看到对方的修改了。通常状况下,须要有主开发者来决定合并谁的提交(能够本身解决,也能够要求开发者之间解决之后再从新提交)。分布式的好处是灵活自由,大部分时间能够离线工做。模块化

TFVC(集中式)

Team Foundation Version Control是集中式版本控制系统。典型的集中式版本控制系统,对于项目成员来讲,每个源码文件的当前版本(服务器最终Check in)有且只有一份(不管是下面哪一种工做流模式)。历史数据仅保存于服务器上,分支建立也只能在服务器上操做。因此,比较、回滚等操做都须要链接服务器。ui

TFVC有两种工做流模式:url

  • 服务器工做区- 在修改源码文件以前,必须公开的Check Out源码文件,以使系统锁定文件(防止再被其余人Check Out)。这种模式下,大部分操做都是须要链接服务器的。使用服务器工做区的好处是,你能够扩展codebases到很大的程度(每一个分支百万个文件,以及大的二进制文件)。Visual Source Safe, Perforce, 以及 CVS也是这种工做流模式。
  • 本地工做区- 每一个项目成员在本地有一份codebase拷贝(只含最新代码库,不包含历史数据),而且能够在离线模式工做。开发者Check in修改集时,若有冲突,协商解决(好比存在于不一样开发者电脑上的同一个文件,提交修改时会冲突,具体采用哪一个要靠开发者之间协商)。Subversion也是这种工做流模式。

 

Git与TFVC的比较

范围 TFVC Git
修改集

团队成员能够同时在各自开发电脑上修改文件。你能够在任什么时候间上传修改集。然而,你的上传可能会被冲突而打断。spa

你能够在check in以后修改每一个修改集的注释。你能够连接修改集和工做项(work items)或是已经完成的builds。

团队成员能够同时在各自开发电脑上修改文件。你能够独立地在本身电脑上建立提交,并贡献给团队。在你准备上传(push)到服务器以前,你必须先下载(pull)最新提交的文件。当你下载(pull)时,可能会被冲突而打断。

你能够修改本地最新的提交,而不能修改旧的提交。你能够连接修改集和工做项(work items)或是已经完成的builds。

你能够经过命令行修改和组合本地提交。

分支

 基于路径的分支是最经常使用的分支方式,可以规避feature变化对软件发布的风险。典型作法是团队成员对每个分支都创建额外的工做区。

每一个分支的修改集都是独立无关的,因此你不用在切换分支前作check in。兄弟分支之间的合并须要一个baseless merging。

你能够可视化观看分支结构以及修改集在哪里被合并。

 分支是轻量化的以及路径无关的。不少开发者有时在平常开发中,会为每个新特性建立分支。你能够从一个分支快速切换到另一个分支,轻松游刃于各个分支。你能够只在本身电脑上建立分支,并在必要时能够分享给其余成员。

在切换分支以前,你必须作完提交(commit)、分支(branch)、存放(stash)或撤回(undo)。合并是简单的,而且与分支所依赖的提交无关。

你能够比较不一样的分支,以查看哪一个提交是在哪一个分支上的。

冲突解决 你可能须要在你get,check in,merge,unshelve时解决冲突。你能够在Visual Studio中解决全部类型的冲突。 你可能须要在你pull,merge时解决冲突。你能够经过命令行或在Visual Studio中解决内容冲突。
文件存储 能够Check in 大二进制文件。 能够Check in 小二进制文件(像常规文件同样操做)。如果大二进制文件,须要用Git-LFS  来存储大二进制文件到VSTS。
历史 历史数据不存在开发电脑中,所以只能在链接服务器时才能查看历史。你能够在Visual Studio或Web portal中查看历史。你能够查看谁修改了一行以及什么时候修改的。 历史数据复制存储于开发电脑中,所以在没有链接服务器时也能查看历史。你能够在Visual Studio或Web portal中查看历史。你能够查看谁修改了一行以及什么时候修改的。
标签 你能够经过Visual Studio或命令行来给一个或多个文件加标签。每一个文件的不一样版本均可以加标签。 你能够经过命令行来给独立的提交加标签。在Visual Studio的history widow能够查看标签。
回滚 你能够回滚一个或多个修改集。 你能够还原提交(revert a commit)
扩展 本地工做区可用于小型或超大型项目。服务器工做区支持大型扩展(每一个分支百万个文件,以及大的二进制文件) 能够快速开始小型项目,可是若是想要扩展成大型项目,你须要提早计划以便模块化codebase。你能够在一个项目(project)中建立多个仓库。                               
 

 

参考:https://docs.microsoft.com/zh-cn/vsts/repos/tfvc/comparison-git-tfvc?view=vsts

转载请注明出处:https://www.cnblogs.com/lichu-lc/p/9501451.html

相关文章
相关标签/搜索