【问题标题】:What are the big differences between TFVC (TFS Version Control) and Git for source control when using Visual Studio 2013?使用 Visual Studio 2013 时,TFVC(TFS 版本控制)和用于源代码控制的 Git 之间有哪些重大区别?
【发布时间】:2013-12-05 03:21:23
【问题描述】:

关于 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 的人的相关链接。

【问题讨论】:

    标签: git visual-studio tfs azure-devops tfvc


    【解决方案1】:

    更新

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

    • Microsoft 已向 Team Foundation Server、Azure DevOps Server 和 Azure DevOps 添加了 ssh 支持。
    • Visual Studio 2019 16.8+ 附带一个完全改进的 git 客户端。
    • Microsoft 已将其自己的内部产品从 TFVC 中移出。 Windows 和 Office 源现在存在于 Azure DevOps 中的 Git 中。
    • Microsoft 已经收购了 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 有一个very extensive page on all the features and differences between Team Foundation Version Control and Git

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

    不,还有更多,但它们通常是 Git 的高级场景。本地回购、离线支持和对历史的完全本地保真度非常强大,您可以使用 Visual Studio 开箱即用。还有一些其他功能也很棒!从一个存储库分支和合并到另一个存储库的能力非常强大。我建议您查找Pro Git book 的那些。 TFS 中的 Git 只是另一个 git 服务器,它几乎具有标准 Git 的所有功能。

    在合并之前重写历史记录的能力允许您删除或合并许多较小的更改集,从而使历史记录更清晰,更易于人类阅读。

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

    TFVC 也有命令行,只是人们不使用它。对于那些想要使用 Git 并且永远不会比 TFVC 做更多事情的人来说,他们可能真的不需要离开 UI,但他们不会获得很多很酷的功能......

    可能还有其他一些缺点,主要是因为它与人们习惯的不同。如果你不花时间去了解 git 在做事时做了什么,那么你就不会太难了。像 Rebase 和 Squash 这样的东西确实很强大,并且创建了一个非常干净的历史记录,但是如果使用不当,它会给人们留下无法再合并的问题。 TFS has the ability to put some security settings to take away the rights to make very stupid decisions on a git repository.

    对于 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 开始在很多地方都可以使用...这些是一些选项:

    其他好读物:

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

    【讨论】:

    • ALM Rangers 将很快在此处发布他们的 Git for TFVC 用户指南:vsarbranchingguide.codeplex.com/releases。当前的 Beta 版本还没有它,我希望它会在下一批中下降:)。
    • 自从我的原始帖子发布将近一年后,我想我会让大家知道我们已经成功地将 VS2013 与 Git 一起使用。喜欢在单个团队项目下创建多个存储库的能力。我们在合并时遇到了一些问题。在某些情况下,自动合并选择不正确。所以看起来成功的合并实际上并非如此。我们现在仔细检查所有合并的文件。此外,在某些情况下,合并阻塞并在 VS UI 中引发错误(libgit2 合并冲突)。要解决这个问题,我们必须进入 cmd 提示符并发出 git pull(不好玩)。
    • 我知道作为更新 4 的一部分,会针对最后一个错误进行修复。在某些情况下,开发人员之间的终端设置不同可能会导致这些问题发生。
    • 我们一直在使用 VS 2013 w/Update 4,因为它在几个月前下降,它似乎已经从 GUI 修复了我们所有的 Git 问题。我们习惯于定期从远程服务器拉取数据,这有助于使我们的本地存储库保持最新。此外,微软最近对产品待办事项/任务板进行了几次积极的更新。您现在可以直接从面板编辑描述、分配、设置状态并调整项目的优先级/顺序。
    • “Git vs TFVC”链接链接到“开始使用 Git”。这是否意味着现在我们应该更好地使用 Git 而不是 TFVC? ;D 找到了一个新链接:visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
    【解决方案2】:

    清除一些在 TFS

    中经常使用的令人困惑的混合术语

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

    TFS 使用VCS组件主要是Team Foundation Version Control (TFVC)

    所以,问题是 TFVCGit

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

    所以,问题是:TFVC vs Git

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

    至于选择使用哪个,我认为 Git

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

    【讨论】:

    • TFS 有分支和架子集(允许#5),如果你真的想要的话,你甚至可以将你的项目配置为使用 git。 TFS VCS 还有一个用于# 的命令行。它不是轻量级的,但它比 git 提供了更多开箱即用的功能,因为它内置了完整的项目管理/错误跟踪/工作跟踪/发布管理/构建管理/签入策略/测试。
    • @MatthewWhited 当然有可能,但与 git 相比,它非常麻烦,因为它是基于目录的实现,而 git 是基于图形的实现。请注意,我声明没有simple 方法可以做到这一点。
    • @MatthewWhited 另外,我同意额外的应用程序生命周期工具,但我的答案仅限于源代码版本控制解决方案。
    • IDK... 我发现 TFS 非常易于使用。虽然我也不喜欢 GIT 创建的所有分支,因为它使得确保每个人都是相同的代码变得更加复杂,有些人快速流失,而另一些人却很慢。
    • 不知道。 GIT 对于它要完成的任务来说太复杂了,而且非常不直观(为什么它是拉取请求而不是推送请求?!)。 TF 源代码控制非常简单,可以在几分钟内向我团队中的任何新开发人员解释。我还认为鼓励在本地工作是团队内部甚至个人的一大劣势。你如何防止在 Git 中丢失你的工作,而不用在项目中乱扔分支? (为此,TFS 中有搁置集 - 在服务器上)
    【解决方案3】:

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

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

    【讨论】:

    • 当然,Visual Studio 本身为 Git 提供了一个 GUI。但是有时您可能想潜入命令行来做一些原本不可能的事情。公开所有 Git 命令的 GUI 与命令行一样困难。
    • 有命令行电动工具。例如从存在中完全消除一个分支。
    猜你喜欢
    • 1970-01-01
    • 2016-04-13
    • 2012-07-26
    • 2011-09-29
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    相关资源
    最近更新 更多