106

关于 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 启动指南显示 Git 与 Visual Studio 2013 一起使用?Microsoft 有一个将现有 Git 存储库集成到 Visual Studio 2013 的视频,但我正在寻找从头开始使用 Git 和 VS 2013。

我不是在这里寻找一本书,而只是一些要点,也许还有一些来自使用过 TFVC 和 Git 的人的相关链接。

4

3 回答 3

119

更新

自 2013 年以来,发生了很多事情:

  • Microsoft 已为 Team Foundation Server、Azure DevOps Server 和 Azure DevOps 添加了 ssh 支持。
  • Visual Studio 2019 16.8+ 附带一个完全改进的 git 客户端。
  • 微软已经将自己的内部产品从 TFVC 中移除。Windows 和 Office 源现在位于 Azure DevOps 的 Git 中。
  • 微软已经收购了 GitHub,它现在是 DevOps 相关产品的主要关注点,许多为 Azure DevOps 做出贡献的人因此转移到了 GitHub。
  • Git 和 Git 大型文件系统的虚拟文件系统解决了人们留在 TFVC 上的许多原因。
  • Azure DevOps 有一个内置的迁移工具,可以将你的 TFVC 历史(部分)转换为 git 存储库。

在这段时间里,TFVC 几乎没有发生什么:

  • YAML 管道在引入 2 年后尚未获得 TFVC 支持(我根本没想到这些)。
  • 团队资源管理器现在在 Visual Studio 中称为“旧版”
  • TFVC 已宣布功能完成
  • 对 Eclipse 和 Visual Studio Code 和 Linux/Mac 的 TFVC 支持已正式弃用/终止。

很明显谁赢了:Git。


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

MSDN 有一个非常广泛的页面,介绍了 Team Foundation 版本控制和 Git 之间的所有功能和差异

就我而言,唯一的好处是本地存储库(并不是说这无关紧要)和 IoS 开发支持吗?

不,还有更多,但它们通常是 Git 的高级场景。本地回购、离线支持和对历史的完全本地保真度非常强大,您可以使用 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 服务器和本地 repo 只是 Git,因此任何 git 客户端都可以在这里为您提供帮助。SourceTree 是这里的一个选项。Git for Windows 客户端是另一个。

对于标准操作,签入、签出、合并、分支(或推送、拉取、获取、提交、合并),UI 工作得很好。

是否有详细的 Git 启动指南显示 Git 与 VS 2013 一起使用?MS 有一个将现有 Git 存储库集成到 VS 2013 的视频,但我正在寻找从头开始使用 Git 和 VS 2013?

从 Git 开始在很多地方都可以使用......这些是一些选项:

其他好读物:

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

于 2013-11-21T00:29:25.693 回答
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 中,您只需签出一个不同的分支。
于 2017-11-27T21:52:33.197 回答
4

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

如果您对命令行界面不满意,Git 可以使用多个 GUI 前端。Git 本身实际上包含存储库浏览器 GUI 工具,称为gitkgit-gui- git 的 GUI。然后是git -colaTortoiseGit等第三方应用。

于 2014-05-18T17:00:36.353 回答