在 Visual Studio 中使用 Git

作为Visual SourceSafe的长期用户(并且讨厌),我正在与一位同事讨论切换到SVN的问题。他建议改为使用Git 。因为显然,它可以在没有中央服务器的情况下用作对等网络(我们是 3 开发人员团队)。

但是,我无法找到有关将 Git 与 Visual Studio 集成的工具的任何信息 - 是否存在这种东西?

在 Visual Studio 中使用 Git 有哪些可用的技术?在开始之前,我需要了解哪些区别?

答案

2013 年 1 月,Microsoft 宣布他们将在其所有 ALM 产品中添加完整的 Git 支持。他们已经发布了 Visual Studio 2012 插件 ,其中添加了 Git 源代码控件集成。

另外,还有一个名为Git 扩展的项目,其中包括 Visual Studio 2005、2008、2010 和 2012 的加载项以及 Windows 资源管理器集成。它会定期更新,并在几个项目中使用过,我发现它非常有用。

另一个选择是Git Source Control Provider

我将 Git 与 Visual Studio 一起用于协议缓冲区到 C#的端口。我不使用 GUI - 我只是保持命令行打开以及 Visual Studio。

在大多数情况下都可以 - 唯一的问题是当您想重命名文件时。 Git 和 Visual Studio 都希望它们是重命名它的人。我认为在 Visual Studio 中重命名是解决问题的方法 - 请小心之后在 Git 方面的操作。尽管过去这有点麻烦,但我听说它在 Git 方面实际上应该是无缝的,因为它可以注意到内容几乎相同。 (通常不完全相同 - 重命名 IME 类时,您倾向于重命名文件。)

但基本上 - 是的,它工作正常。我是 Git 新手,但是我可以让它完成我需要做的所有事情。确保您有一个 bin 和 obj 的 git 忽略文件,以及 * .user。

Git Source Control Provider是将 Git 与 Visual Studio 集成在一起的新插件。

我已经在工作中研究了这一点(使用 Subversion 和 Git)。 Visual Studio 实际上具有一个源代码管理集成 API,使您可以将第三方源代码管理解决方案集成到 Visual Studio 中。但是,出于几个原因,大多数人都不会理会它。

首先,API 几乎假定您正在使用锁定结帐工作流程。其中有很多挂钩,要么实现起来很昂贵,要么在您使用更现代的编辑合并工作流时放任不管。

第二个(相关的)是当您使用 Subversion 和 Git 都鼓励的编辑合并工作流时,您实际上并不需要 Visual Studio 集成。 SourceSafe 与 Visual Studio 集成的主要杀手之处在于,您(和编辑器)可以一目了然地告诉您拥有的文件,必须先检出才能编辑的文件,以及即使您想检出也不能检出的文件。然后,它可以帮助您执行想要编辑文件时需要执行的任何版本控制伏都教。这些都不是典型的 Git 工作流程的一部分。

当您使用 Git(通常是 SVN)时,您的版本控制交互将全部在开发会话之前或之后进行(一旦一切正常工作并经过测试)。到那时,使用其他工具确实没有太多麻烦。您不必经常来回切换。

我发现 Git 可以像在整棵树上一样工作,而与基于文件或遵循 checkout-edit-commit 模式的源代码控制工具相比,它从 IDE 集成中受益较少。当然,在某些情况下,单击按钮进行历史检查可能会很不错,但我不会非常想念。

真正的必须要做的是让您的. gitignore 文件充满不应该存在于共享存储库中的内容。我的(通常包括)以下内容:

*.vcproj.*.user
*.ncb
*.aps
*.suo

但这在很大程度上是 C ++ 的偏见,很少或根本没有使用任何类向导样式的功能。

我的使用模式如下所示。

  1. 代码,代码,Visual Studio 中的代码。

  2. 当高兴时(明智的中间点来提交代码),切换到 Git,分段更改并检查差异。如果明显有问题,请切换回 Visual Studio 并修复,否则进行提交。

在命令提示符下,可以在 Git 中轻松进行任何合并,分支,变基或其他精美的 SCM 内容。 Visual Studio 通常对其中的更改感到很满意,尽管如果您对项目文件进行了重大更改,有时它可能需要重新加载某些项目。

我发现,Git 的有用性超过了没有完全集成 IDE 所带来的任何不便,但在某种程度上,这只是一个品味问题。

微软最近宣布了适用于 Visual Studio 2012 的 Git (更新 2)。我还没有玩过,但是这个视频看起来很有希望。

这是有关如何使用 Visual Studio 2012 中的 Git 的快速教程

也不要错过 TortoiseGit ... https://tortoisegit.org/

Microsoft 提供了一个适用于 GitVisual Studio 工具 。但是,它仅支持 Visual Studio 2012(更新 2)。

Visual Studio 2013 本机支持 Git。

官方公告

Microsoft 在 Visual Studio 中完成的对 Git 的支持足以完成基本工作(提交 / 获取 / 合并和推送)。我的建议是避免这种情况...

我非常喜欢GitExtensions (或比例较小的 SourceTree )。因为对我来说,了解DAG非常重要,所以要了解 Git 的工作原理。您会更加了解项目的其他贡献者所做的事情!

在 Visual Studio 中,您无法快速查看文件或提交之间的差异,也无法(仅添加到索引中)仅提交部分修改。浏览您的历史记录也不是一件好事…… 所有这些都以痛苦的经历而告终!

并且,例如,GitExtensions 与有趣的插件捆绑在一起:后台获取,GitFlow,...,现在, 持续集成

对于Visual Studio 2015的用户,如果您安装 GitHub 扩展,Git 即将成形。但是外部工具还是更好的;-)