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

 

VSTS(Visual Studio Team Services)

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

每个有微软账号(也是免费注册的)的用户都可以申请VSTS,官网申请入口。当然,免费用户是有一定限制的,比如:每个项目的成员不能超过5个等。不过一般中小型开发项目,5个人也够用了。

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

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

 

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

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

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

Git(分布式)

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

TFVC(集中式)

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

TFVC有两种工作流模式:

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

 

Git与TFVC的比较

范围TFVCGit
修改集

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

你可以在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)中创建多个仓库。                               
 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode - 1254】统计封闭岛屿的数目(dfs,连通块)

题目链接:https://leetcode-cn.com/problems/number-of-closed-islands/ 有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 )。 我们从一块陆地出发,每次可以往上下左…

【转】0.SharePoint服务器端对象模型 之 序言

对于刚刚开始接触SharePoint的开发人员,即使之前有较为丰富的ASP.NET开发经验,在面对SharePoint时候可能也很难找到入手的方向。对于任何一种开发平台而言,学习开发的过程大致会包括:开发工具的使用、开发手段的选择和开发语言的编…

【LeetCode - 122】买卖股票的最佳时机 II(贪心 或 dp)

题目链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票…

【转】1.SharePoint服务器端对象模型 之 对象模型概述(Part 1)

在一个传统的ASP.NET开发过程中,我们往往会把开发分为界面展现层、逻辑业务层和数据访问层这三个层面。作为一个应用开发平台,SharePoint是微软在直观的开发能力和自由的扩展能力之间,取到的一个平衡点,其对象模型的设计理念也反映…

【LeetCode - 123】买卖股票的最佳时机 III

题目链接: 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票&#xf…

【转】1.2SharePoint服务器端对象模型 之 对象模型概述(Part 2)

(三)Url 作为一个B/S体系,在SharePoint的属性、方法参数和返回值中,大量的涉及到了Url,总的来说,涉及到的Url可以分为如下四类: 绝对路径:完整的Url,包含了协议头&…

【LeetCode - 224】基本计算器(栈)

实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。 题目链接:https://leetcode-cn.com/problems/basic-calculator/ 示例 1: 输入:s "1 1" 输出:2 示例 2: 输入:s " 2-1 …

【转】2.1 SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)

本节将会介绍SharePoint中最为常用的一些对象模型,以及如何使用这些对象模型来访问和操作网站中的数据。几乎所有的SharePoint服务器端开发都会涉及到这些内容,因此应着重掌握本节中所介绍的基本对象模型的使用方法。由于篇幅所限,在介绍每种…

【LeetCode - 1047】删除字符串中的所有相邻重复项(栈)

https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/ 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复…

【转】2.2 SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)

(二)列表(SPList) 列表是SharePoint中最为重要的数据容器,我们一般保存在SharePoint中的所有数据,都是保存在列表中(文档库也是一种列表),因此列表对象在SharePoint的开…

【LeetCode - 227】基本计算器 II(栈)

https://leetcode-cn.com/problems/basic-calculator-ii/ 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 输入:s "32*2" 输出:7 示例 2: 输入…

Team Foundation Server的回滚操作

VSTF Rollback 操作 最近遇到要把有些项目需要做回滚操作,发现TFS的UI上没有回滚的操作。 经过百度,查到一个CSDN上的博主发了一种方法,经过验证,那种方法是错误的: 他通过先获取指定变更集-》签出-》签回去&#xff…

【LeetCode - 141142】环形链表(i和ii)(快慢指针,链表)

https://leetcode-cn.com/problems/linked-list-cycle/ 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾…

sharepoint的文件是怎样存放的及存放的表是哪个

主要有两个表,一个是AllDocs,另一个是AllDocStreams,在AllDocstreams有一个content字段,这个字段是用来保存文件内容的,这个字段最大只能放2G,这也就是SharePoint上传文件最大不能超过2G的原因。 表 AllDoc…

【LeetCode - 556】下一个更大元素 III(贪心,思维)

https://leetcode-cn.com/problems/next-greater-element-iii/ 给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n 。如果不存在这样的正整数,则返回 -1 。 注意 ,…

SharePoint Pages(1)之SharePoint页面体系架构

[开篇]最近一段时间在研究SharePoint技术,在内网建设了一个门户的原型,做一些尝试。由于一些需求要新建一些功能页。开始使用SharePoint制作页面,搞了半天才明白原来内容页不支持内联代码,在Visual Studio里面捣鼓了半夜&#xff…

逆序数问题,用归并排序而非树状数组求解

逆序数,结合归并排序。 之前一直用树状数组写的,今天发现归并排序也很好写。 https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tabanswerKey class Solution { public:int a[200005] {0}, tmp[200005] {0};int sort(int left…

SharePoint安全 - SharePoint网站常用页面URL索引

一. 主要网站内容 首页 /default.aspx /Pages/default.aspx 网站设置 /_layouts/settings.aspx 所有网站内容 /_layouts/viewlsts.aspx 移动端所有网站内容 /_layouts/mobile/mbllists.aspx 共享文档 /shared documents/forms/allitems.aspx 管理网站内容结构 /_l…

docker安装与学习

安装Docker 系统环境:macOS Catalina 10.15.7 通过brew安装docker brew install --cask --appdir/Applications docker 直接brew install docker装上的好像不是,好像是当成了formula了。如下图 brew cask install docker直接提示命令不对&#xff0c…

集群、分布式、负载均衡区别与联系

1、Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群) 集群是一个统称,他分为好几种,如:高性能科学群集、负载均衡群集、高可用性群集等。 科学群集 、高性能集群(High performance clus…