在Visual Studio中使用Git

作为一个长期的Visual SourceSafe用户(和讨厌),我正在讨论与同事交换SVN的问题。 他build议使用Git来代替。 因为,显然,它可以作为没有中央服务器(我们只有一个3开发团队)的点对点。

我还没有find任何有关将Git与Visual Studio集成在一起的工具 – 这种事情是否存在?

有什么技术可以在Visual Studio中使用Git? 在开始之前我需要知道他们有什么不同之处?

2013年1月,微软宣布他们正在为其所有的ALM产品添加完整的Git支持。 他们发布了一个 Visual Studio 2012 插件 ,增加了Git源代码控制集成。

另外还有一个名为Git Extensions的项目,它包括Visual Studio 2005,2008,2010和2012的插件,以及Windows资源pipe理器集成。 它定期更新,并用于几个项目,我发现它非常有用。

另一个选项是Git源代码pipe理提供程序 。

我使用Visual Studio的Git协议缓冲区到C#的端口。 我不使用GUI – 我只保留一个命令行以及Visual Studio。

大多数情况下没有问题 – 唯一的问题是当你想重命名一个文件。 Git和Visual Studio都宁愿他们是重命名它的人。 我认为,在Visual Studio中重命名它是一种方法,不过要注意之后你在Git方面做了什么。 虽然这在过去有点痛苦,但是我听说Git方面应该是非常无缝的,因为它可以注意到内容大部分是相同的。 (不完全相同,通常 – 当您重命名类IME时,您倾向于重命名文件。)

但基本上 – 是的,它工作正常。 我是一个Git新手,但我可以把它做到我需要的一切。 确保你有一个bin和obj的git ignore文件,和* .user。

Git Source Control Provider是Git与Visual Studio集成的新插件。

我已经研究了一下(Subversion和Git)。 Visual Studio实际上有一个源代码控制集成API,允许您将第三方源代码控制解决scheme集成到Visual Studio中。 但是,大多数人不会因为几个原因而烦恼。

首先,API几乎假定您正在使用locking结帐工作stream程。 其中有很多钩子,要么实现方式昂贵,要么当你使用更现代化的编辑 – 合并工作stream程时,变得毫无意义。

第二个(相关的)是,当你使用Subversion和Git鼓励的编辑合并工作stream程时,你并不需要 Visual Studio集成。 SourceSafe与Visual Studio集成的主要杀手是,你(和编辑)一眼就可以知道你拥有哪些文件,在你编辑之前必须检出哪些文件,哪些是你不能检出的文件。 然后它可以帮助你做任何你想编辑文件时需要做的修改控制巫术。 这些都不是典型的Git工作stream程的一部分。

当你使用Git(通常是SVN)时,你的修订控制交互都会在你的开发会话之前或之后(一旦你有所有的工作和testing)发生。 在这一点上,使用不同的工具真的不是太痛苦。 你并不是经常需要来回切换。

我发现,Git在整个树上工作时,从源代码控制工具中获得的IDE集成较less,这些源代码控制工具可以是基于文件的,也可以遵循checkout-edit-commit模式。 当然有些情况下点击button做一些历史考试可不错,但是我不会错过的。

真正的必须做的是让你的.gitignore文件充满不应该在共享存储库中的东西。 我的一般包含(其他东西)如下:

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

但是这很大程度上是C ++的偏颇,几乎没有使用任何类向导风格的function。

我的使用模式如下所示。

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

  2. 当开心(合理的中间点提交代码,切换到Git,阶段的变化和审查差异。如果有什么明显的错误切换回Visual Studio和修复,否则提交。

任何合并,分支,rebase或其他奇特的SCM东西很容易从命令提示符在Git中完成。 Visual Studio通常对它下面的东西感到满意,但是如果你已经显着改变了项目文件,有时候需要重新加载一些项目。

我发现Git的实用性超过了没有完整的IDE集成的任何小小的不便之处,但在某种程度上,它是一个品味的问题。

微软最近宣布了Git for Visual Studio 2012 (更新2)。 我还没有玩过,但这个video看起来很有希望。

这里是一个关于如何从Visual Studio 2012使用Git的快速教程 。

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

微软有一个适用于Git的Visual Studio工具 。 它只支持Visual Studio 2012(更新2)。

Visual Studio 2013本地支持Git。

看到官方公告 。

Microsoft在Visual Studio中完成的Git支持对于基本工作(提交/读取/合并和推送)来说足够好。 我的build议只是为了避免它…

我非常喜欢GitExtensions (或者SourceTree的比例较小 )。 因为看到DAG对于我来说非常重要,因为它可以理解Git是如何工作的。 而且你更加意识到你的项目的其他贡献者做了什么!

在Visual Studio中,不能很快看到文件之间的区别或提交,也不能(添加到索引)并仅提交部分修改。 浏览你的历史是不好的…所有在一个痛苦的经验结束!

而且,例如,GitExtensions捆绑了一些有趣的插件:后台获取,GitFlow,…现在, 持续集成 !

对于Visual Studio 2015的用户,如果您安装了GitHub扩展,Git正在形成。 但外部工具仍然更好;-)

TortoiseGit已经成熟,我推荐它,尤其是如果你已经使用了TortoiseSVN。

Git Extensions的最新版本现在支持Visual Studio 2010 (与Visual Studio 2008和Visual Studio 2005一起 )。

我发现使用Visual Studio 2008相当简单,界面在Visual Studio 2010中似乎是一样的。

实际上工作得很好的最简单的解决scheme是将TortoiseGit命令添加为外部工具。

向Visual Studio添加Git(TortoiseGit)工具栏的解决scheme

正如Jon Rimmer所提到的,您可以使用GitExtensions。 GitExtensions可以在Visual Studio 2005和Visual Studio 2008中工作,如果您手动复制和configuration.Addin文件,它也可以在Visual Studio 2010中工作。

目前在Visual Studio中有两个Git Source Control选项(2010和12):

  1. Git源代码pipe理提供程序
  2. Microsoft Git Provider

我已经尝试过,并且发现第一个更成熟,并且有更多的function。 例如,它可以很好地兼容git和git扩展,甚至可以暴露它们的特性。

注意 :无论使用哪种扩展名,请确保从Tools -> Options -> Source control -> Plugin Selection启用它。

截至2013年2月11日,Visual Studio 2012的Microsoft Git插件也可以使用Express版本 。