作为一名长期使用Visual SourceSafe的用户(也是仇恨者),我正在与一位同事讨论切换到SVN;他建议改用Git。因为,显然,它可以作为点对点使用,而无需中央服务器(我们是一个3开发团队)。

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

在Visual Studio中使用Git有哪些技术?在我开始之前,我需要知道它们有什么不同?


当前回答

我在工作中对此进行了一些研究(包括Subversion和Git)。Visual Studio实际上有一个源代码管理集成API,允许您将第三方源代码管理解决方案集成到Visual Studio中。然而,出于几个原因,大多数人都不介意。

首先,API基本上假设您使用的是锁定的签出工作流。其中有很多钩子,它们要么实现起来很昂贵,要么就是在使用更现代的编辑合并工作流时变得毫无意义。

第二个(与此相关)是,当您使用Subversion和Git都鼓励的编辑合并工作流时,您实际上不需要Visual Studio集成。SourceSafe与Visual Studio集成的主要杀手在于,您(和编辑器)可以一目了然地知道您拥有哪些文件,哪些文件必须在编辑之前签出,哪些文件即使您想签出也无法签出。然后,它可以帮助您在编辑文件时执行任何需要执行的修订控制伏都教。这些都不是典型的Git工作流的一部分。

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

其他回答

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

这里是一个关于如何使用VisualStudio2012中的Git的快速教程。

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

我发现它很容易与VisualStudio2008一起使用,而且在VisualStudio2010中界面似乎是一样的。

我使用Git和Visual Studio将协议缓冲区连接到C#。我不使用GUI——我只是像Visual Studio一样打开命令行。

在大多数情况下,这是好的-唯一的问题是当您想要重命名文件时。Git和Visual Studio都希望自己是重命名它的人。不过,我认为在Visual Studio中重命名它是一种方法——只是要小心之后在Git端的操作。虽然这在过去有点痛苦,但我听说它在Git端实际上应该是无缝的,因为它可以注意到内容基本相同。(通常不完全相同——在重命名类IME时,您倾向于重命名文件。)

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

正如Jon Rimmer所言,您可以使用GitExtensions。GitExtensions可以在Visual Studio 2005和Visual Studio 2008中工作,如果您手动复制和配置.Addin文件,它也可以在Visual Studio2010中工作。

我在工作中对此进行了一些研究(包括Subversion和Git)。Visual Studio实际上有一个源代码管理集成API,允许您将第三方源代码管理解决方案集成到Visual Studio中。然而,出于几个原因,大多数人都不介意。

首先,API基本上假设您使用的是锁定的签出工作流。其中有很多钩子,它们要么实现起来很昂贵,要么就是在使用更现代的编辑合并工作流时变得毫无意义。

第二个(与此相关)是,当您使用Subversion和Git都鼓励的编辑合并工作流时,您实际上不需要Visual Studio集成。SourceSafe与Visual Studio集成的主要杀手在于,您(和编辑器)可以一目了然地知道您拥有哪些文件,哪些文件必须在编辑之前签出,哪些文件即使您想签出也无法签出。然后,它可以帮助您在编辑文件时执行任何需要执行的修订控制伏都教。这些都不是典型的Git工作流的一部分。

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