作为Visual SourceSafe的长期用户(讨厌),我正在与一位同事讨论切换到SVN的问题。他建议改为使用Git。因为显然,它可以在没有中央服务器的情况下用作对等网络(我们是3开发人员团队)。
但是,我无法找到有关将Git与Visual Studio集成的工具的任何信息-是否存在这种东西?
在Visual Studio中使用Git有哪些可用的技术?在开始之前,我需要了解哪些区别?
作为Visual SourceSafe的长期用户(讨厌),我正在与一位同事讨论切换到SVN的问题。他建议改为使用Git。因为显然,它可以在没有中央服务器的情况下用作对等网络(我们是3开发人员团队)。
但是,我无法找到有关将Git与Visual Studio集成的工具的任何信息-是否存在这种东西?
在Visual Studio中使用Git有哪些可用的技术?在开始之前,我需要了解哪些区别?
Answers:
2013年1月,Microsoft 宣布他们将在其所有ALM产品中添加完整的Git支持。他们已经发布了 Visual Studio 2012 插件,其中添加了Git源代码控件集成。
另外,还有一个名为Git Extensions的项目,其中包括Visual Studio 2005、2008、2010和2012的加载项以及Windows Explorer集成。它会定期更新,并在几个项目中使用过,我发现它非常有用。
另一个选择是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 ++的偏见,很少或根本没有使用任何类向导样式的功能。
我的使用模式如下所示。
代码,代码,Visual Studio中的代码。
当高兴时(明智的中间点来提交代码),切换到Git,进行更改并检查差异。如果显然有任何错误,请切换回Visual Studio并进行修复,否则进行提交。
在命令提示符下,可以在Git中轻松进行任何合并,分支,变基或其他精美的SCM内容。Visual Studio通常对其中的更改感到很满意,尽管如果您对项目文件进行了重大更改,有时它可能需要重新加载某些项目。
我发现,Git的有用性超过了没有完全集成IDE所带来的任何不便,但在某种程度上,这只是一个品味问题。
git rm <file>
和echo <file> >>.gitignore; git add .gitignore
你的活跃的分支的提示。提交更改后,您始终可以将修补程序挑选到其他分支上。
微软最近宣布了适用于Visual Studio 2012的Git(更新2)。我还没有玩过,但是这个视频看起来很有希望。
这是有关如何使用Visual Studio 2012中的Git 的快速教程。
也不要错过TortoiseGit ... https://tortoisegit.org/
Microsoft提供了一个适用于Git的Visual Studio工具。但是,它仅支持Visual Studio 2012(更新2)。
Microsoft在Visual Studio中完成的对Git的支持足以满足基本工作(提交/获取/合并和推送)。我的建议是避免这种情况...
我非常喜欢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中似乎相同。
实际运行良好的最简单解决方案是将TortoiseGit命令添加为外部工具。
当前,Visual Studio(2010和12)中的Git Source Control有2个选项:
我都尝试过,发现第一个更成熟,并且具有更多功能。例如,它在乌龟git和git扩展名中都可以很好地发挥作用,甚至可以公开它们的功能。
注意:无论使用哪种扩展名,请确保都启用了该扩展名Tools -> Options -> Source control -> Plugin Selection
才能正常工作。