将Git与Visual Studio结合使用

作为一个长期的Visual SourceSafe用户(和仇恨者),我正在和一个同事讨论切换到SVN;他建议使用git。因为,显然,它可以在没有中央服务器的情况下用作点对点(我们是一个3人开发团队)。

不过,我还没有找到任何关于将Git与Visual Studio集成的工具的信息——这样的东西存在吗?

有哪些技术可用于将Git与Visual Studio结合使用?在开始之前,我需要了解它们的不同之处?

474098 次浏览

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

大多数情况下都没问题——唯一的问题是当你想重命名一个文件时。Git和Visual Studio都宁愿由他们来重命名它。我认为在Visual Studio中重命名它是最好的方法——只是之后要小心你在Git端所做的事情。虽然这在过去有点痛苦,但我听说它在Git端实际上应该是相当无缝的,因为它可以注意到内容将基本相同。(通常不完全相同——当你重命名类时,你倾向于重命名文件,IME。)

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

2013年1月,微软宣布表示他们正在所有ALM产品中添加完整的Git支持。他们在Visual Studio 2012中排名第一,添加了Git源代码控制集成。

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

另一个选项是Git源代码控制提供程序

我发现Git在整个树上工作,与基于文件或遵循签出-编辑-提交模式的源代码控制工具相比,从IDE集成中获益较少。当然,在某些情况下,点击一个按钮进行一些历史检查会很好,但我不太想念。

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

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

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

我的使用模式如下。

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

  2. 开心的时候(合理中间点提交代码,切换到Git,阶段修改和评审差异。如果有明显错误切换回Visual Studio并修复,否则提交。

任何合并、分支、rebase或其他花哨的SCM内容都可以从命令提示符在Git中轻松完成。Visual Studio通常对在其下更改的内容相当满意,尽管如果您显着更改了项目文件,它有时可能需要重新加载一些项目。

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

我在工作中(使用Subversion和Git)对此进行了一些研究。Visual Studio实际上有一个源代码控制集成API,允许您将第三方源代码控制解决方案集成到Visual Studio中。但是,由于几个原因,大多数人都不喜欢它。

首先,API几乎假设您使用的是锁定结帐工作流。其中有很多钩子,要么实现起来很昂贵,要么在您使用更现代的编辑合并工作流时完全没有意义。

第二个(与此相关)是,当你使用Subversion和Git都鼓励的编辑-合并工作流时,你并没有真正需要 Visual Studio集成。SourceSafe与Visual Studio集成的主要杀手是,你(和编辑器)可以一目了然地知道你拥有哪些文件,哪些文件必须在编辑之前签出,哪些文件即使你想签出也不能签出。然后它可以帮助你做任何当你想编辑文件时需要做的修订控制巫术。这些甚至都不是典型的Git工作流程的一部分。

当你使用Git(通常是SVN)时,你的版本控制交互都发生在开发会话之前或之后(一旦你的一切都正常工作和测试)。在这一点上,使用不同的工具真的不太痛苦。你不必经常来回切换。

根据Jon Rimmer的管理,您可以使用GitEx的。GitEx的工作在Visual Studio 2005和Visual Studio 2008中,如果您手动复制和配置. Addin文件,它也可以在Visual Studio 2010中工作。

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

git扩展的最新版本现在支持Visual Studio 2010(以及Visual Studio 2008Visual Studio 2005)。

我发现它与Visual Studio 2008一起使用相当容易,并且界面在Visual Studio 2010中似乎相同。

Git源代码控制提供程序是将Git与Visual Studio集成的新插件。

TortoiseGit已经成熟,我推荐它,特别是如果你使用过TortoiseSVN。

实际上效果很好的最简单的解决方案是将TortoiseGit命令添加为外部工具。

将Git(TortoiseGit)工具栏添加到Visual Studio的解决方案

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

微软最近发布了Visual Studio 2012的Git(更新2)。我还没有玩过它,但这段视频看起来很有希望。

以下是关于如何使用Visual Studio 2012中的Git的快速教程

Visual Studio 2013原生支持Git。

官方公告

目前Visual Studio中的Git源代码控制有2个选项(2010和12):

  1. Git源代码控制提供程序
  2. Microsoft Git Provider

我已经尝试过了,发现第一个更成熟,并且有更多的功能。例如,它可以很好地与乌龟git和git扩展一起玩,甚至暴露了它们的功能。

说明:无论您使用哪个扩展,请确保从Tools -> Options -> Source control -> Plugin Selection启用它才能工作。

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

我非常喜欢代码扩展工具(或比例较小的资源树)。因为看到DAG对我来说对于理解Git的工作原理非常重要。你更了解你项目的其他贡献者做了什么!

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

而且,例如,GitEx委与有趣的插件捆绑在一起:后台获取、GitFlow……现在,持续集成

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