使用Visual Studio 2013时,TFVC(TFS版本控制)和用于源代码控制的Git之间有什么大区别?


101

关于Git与TFVC源代码管理,存在大量的问题和答案,但是目前没有答案涵盖我可以找到的将Git集成到Team Foundation Server / Service中。

我正在开始使用Visual Studio 2013使用多种语言(C#,C ++,PHP,Javascript,MySSQL)开发绿色牧场。将来,将进行一些iOS开发。我对SVN,VSS和TFVC的源代码控制非常熟悉。但是,我从未使用过Git。我更喜欢使用TFS进行流程管理/敏捷开发...虽然它不是完美的,但是可以很好地集成到Visual Studio中。

因此,为了帮助我在这两个系统之间做出决定...

使用Visual Studio 2013时,用于源代码控制的TFVC和Git之间有什么大区别?

  • 就我而言,唯一的好处是本地存储库(不是说它无关紧要)和iOS开发支持吗?
  • 这是Git命令行界面的唯一缺点(有人会认为这不是缺点;-P)。
  • 您是否有使用Visual Studio 2013 GUI for Git的经验?这足以支持没有命令行界面的基本分支/合并吗?
  • 是否有针对Git的详细启动指南,其中显示了与Visual Studio 2013一起使用的Git?微软有一个视频,用于将现有的Git存储库集成到Visual Studio 2013中,但是我正在寻找从头开始使用Git和VS 2013的视频。

我不是在这里找书,只是一些要点,也可能是使用TFVC和Git的人们的一些相关链接。

Answers:


115

使用VS 2013时,用于源代码控制的TFS和Git之间有什么大区别?

MSDN上有一个非常详尽的页面,介绍了Team Foundation Version Control和Git之间的所有功能和区别

就我而言,唯一的好处是本地存储库(不是很重要)和IoS开发支持吗?

不,还有更多,但它们通常是Git的高级方案。Local Repo,脱机支持以及对历史记录的完全本地保真度都非常强大,而Visual Studio则是开箱即用的。还有其他一些很棒的功能!从一个存储库分支和合并到另一个存储库的功能非常强大。我建议您查找有关Pro Git的书籍。TFS中的Git只是另一个git服务器,它具有标准Git所具有的几乎所有功能。

合并前重写历史记录的功能使您可以删除或合并许多较小的变更集,从而使历史记录更清晰,更易于阅读。

这是Git命令行界面的唯一缺点(有人会认为这不是缺点;-P)。

TFVC也有一个命令行,人们只是不使用它。对于那些想使用Git并且从未做过比TFVC更多的事情的人来说,他们可能真的不需要离开UI,尽管他们没有很多很棒的功能……

可能还有其他一些缺点,这主要是由于它与人们习惯的不同。如果您不花时间去学习git在做事时会做什么,那么用脚射击自己并不难。诸如Rebase和Squash之类的功能确实强大,并且创建了非常干净的历史记录,但是它可能会给人们带来以下问题:如果使用不当,他们将无法合并。TFS能够放置一些安全设置以剥夺对git存储库做出非常愚蠢的决定的权利

对于Windows上的Git用户,一个非常酷的附加组件是PoSHGit。它在Powershell命令行上提供命令自动补全。

您是否有使用VS 2013 GUI for Git的经验?这足以支持没有命令行界面的基本分支/合并吗?

它具有基本操作所需的一切。但是您确实需要能够可视化不同的分支以了解发生了什么。由于Git服务器和本地仓库只是Git,因此任何git客户端都可以在这里为您提供帮助。SourceTree是这里的一个选项。Windows的Git客户端是另一个。

对于标准操作,签入,签出,合并,分支(或推入,拉出,获取,提交,合并)UI可以正常工作。

是否有针对Git的详细启动指南,说明VS 2013使用了Git?MS有一个视频,用于将现有的Git存储库集成到VS 2013中,但是我正在寻找Git和VS 2013从头开始的视频吗?

在许多地方都可以使用Git开头...以下是一些选择:

其他好的读物:

还有一些值得安装的工具:


3
ALM Rangers即将在此处发布其面向TFVC的Git用户指南:vsarbranchingguide.codeplex.com/releases。当前的Beta版本还没有它,我希望它将在下一批产品中删除:)。
jessehouwing,2014年

8
从我的原始帖子开始将近一年之后,我想让大家知道我们已经成功将VS2013与Git结合使用。喜欢在一个团队项目下创建多个存储库的能力。我们在合并时遇到了一些问题。在某些情况下,自动合并选择不正确。因此,看起来成功的合并实际上并非如此。现在,我们再次检查所有合并的文件。此外,在某些情况下,合并会在VS UI中阻塞并引发错误(libgit2合并冲突)。要解决此问题,我们必须转到cmd提示符并发出git pull(不好玩)。
Greg Grater 2014年

1
我知道作为更新4的一部分,最后一个错误已得到修复。在某些情况下,开发人员之间的终端设置不同可能导致这些问题发生。
jessehouwing 2014年

5
自几个月前停产以来,我们一直在使用VS 2013 w / Update 4,它似乎已经解决了来自GUI的所有Git问题。我们习惯于定期从远程服务器提取信息,这有助于使我们的本地存储库保持最新状态。此外,MS最近对产品待办事项列表/任务板进行了一些积极的更新。现在,您可以直接从板上编辑说明,分配,设置状态并调整项目的优先级/顺序。
格雷格·格拉特

1
“ Git vs TFVC”链接链接到“使用Git入门”。这是否意味着现在我们最好在TFVC上使用Git?; D找到了新的链接:visualstudio.com/zh-cn/docs/tfvc/comparison-git-tfvc
Martin Schneider

17

为了清除一些在TFS中经常使用的令人困惑的混合术语

Team Foundation Server(TFS)是应用程序生命周期管理工具,其中包括版本控制系统(VCS)组件。

TFS 使用VCS组件主要是Team Foundation版本控制(TFVC)

因此,问题将是TFVC vs Git

(实际上,TFS支持将Git作为VCS选项。)

所以,问题是:TFVC vs Git

jessehouwing有一个很好的答案,详细介绍了这一点,因此请参考

就选择使用哪种方式,我认为Git胜出

  1. 它轻巧:易于设置和开始使用。
  2. 它的分布式特性意味着它对灾难具有非常强的恢复力,某人将始终拥有该存储库的副本。
  3. 离线工作很简单,您正在使用自己的完整存储库。您可以提交更改,还原,浏览历史记录等。仅在希望与远程存储库同步时才需要在线。
  4. 在TFS中,没有简单的方法来保存更改的状态(文件添加,修改,文件删除),并切换到另一种代码状态。(例如,使用两个功能并来回切换)。在git中,您只需签出其他分支即可。

1
TFS有分支和架子集(允许#5),如果您确实需要,甚至可以将项目配置为使用git。TFS VCS还具有用于#的命令行。这不是轻量级的,但它可以做更多的出比git的盒子的地狱,因为它有一个完整的项目管理/ bug跟踪/工作跟踪/发布管理/构建管理/签入策略/测试内置的。
马修粉饰

@MatthewWhited当然可以,但是与git相比非常麻烦,因为它是基于目录的实现而不是git基于图的实现。请注意,我说过没有simple办法。
詹姆斯·维尔兹巴

@MatthewWhited另外,我同意使用额外的应用程序生命周期工具,但是我仅将答案限于源代码版本控制解决方案。
詹姆斯·维尔兹巴

1
IDK ...我发现使用TFS非常简单。尽管我也不喜欢GIT创建的所有分支,因为它使得确保每个人都是同一代码,而在某些情况下会快速流失,而在另一些情况下却会变慢,这变得更加复杂。
马修·怀特

不知道 对于它要完成的任务,GIT太简单了,而且非常不直观(为什么是请求请求而不是请求请求?!)。TF源代码控制非常简单,可以在几分钟内向团队中的任何新开发人员解释。我还认为鼓励在本地工作是团队内部乃至个人的一大不利条件。如何避免在分支机构中乱丢项目的情况下丢失在Git中的工作?(为此,TFS中有架子集-在服务器上)
Cesar

4

这是Git命令行界面的唯一缺点(有人会认为这不是缺点;-P)。

如果您对命令行界面不满意,可以使用Git的多个GUI前端。Git本身实际上包含名为的仓库浏览器GUI工具,gitk以及git-gui-git的GUI。然后有第三方应用程序,如git的可乐TortoiseGit他人


2
当然,Visual Studio本身提供了Git的GUI。但是有时候,您可能总是想潜入命令行来完成原本不可能的事情。公开所有Git命令的GUI与命令行一样困难。
jessehouwing 2014年

有命令行电动工具。例如,完全消除分支的存在。
工程师
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.