作为一名长期使用Visual SourceSafe的用户(也是仇恨者),我正在与一位同事讨论切换到SVN;他建议改用Git。因为,显然,它可以作为点对点使用,而无需中央服务器(我们是一个3开发团队)。
不过,我还没有找到任何关于将Git与Visual Studio集成的工具的信息——这样的东西存在吗?
在Visual Studio中使用Git有哪些技术?在我开始之前,我需要知道它们有什么不同?
作为一名长期使用Visual SourceSafe的用户(也是仇恨者),我正在与一位同事讨论切换到SVN;他建议改用Git。因为,显然,它可以作为点对点使用,而无需中央服务器(我们是一个3开发团队)。
不过,我还没有找到任何关于将Git与Visual Studio集成的工具的信息——这样的东西存在吗?
在Visual Studio中使用Git有哪些技术?在我开始之前,我需要知道它们有什么不同?
当前回答
我发现,与基于文件或遵循签出-编辑-提交模式的源代码管理工具相比,Git在整个树上工作时,从IDE集成中获益较少。当然,有些情况下,点击一个按钮进行历史检查会很好,但我并不十分怀念。
真正必须做的是让.gitignore文件充满不应该在共享存储库中的内容。矿山通常包含(除其他材料外)以下内容:
*.vcproj.*.user
*.ncb
*.aps
*.suo
但这严重偏向于C++,很少或根本没有使用任何类向导风格的功能。
我的使用模式如下所示。
Visual Studio中的代码,代码,代码。当高兴时(明智的中间点是提交代码),切换到Git,保存更改并查看差异。如果有任何明显错误,请切换回Visual Studio并修复,否则提交。
在Git中,任何合并、分支、重基或其他漂亮的SCM内容都可以从命令提示符轻松完成。VisualStudio通常对其下的内容变化相当满意,尽管如果您对项目文件进行了重大更改,它有时需要重新加载一些项目。
我发现Git的有用性超过了没有完全集成IDE带来的任何不便,但在某种程度上,这是一个品味问题。
其他回答
2013年1月,微软宣布,他们将在所有ALM产品中添加完整的Git支持。他们为Visual Studio 2012发布了一个插件,添加了Git源代码管理集成。
另外,还有一个名为GitExtensions的项目,其中包括Visual Studio 2005、2008、2010和2012的插件,以及Windows资源管理器集成。它定期更新,并在几个项目中使用过,我发现它非常有用。
另一个选项是Git源代码控制提供程序。
Microsoft在Visual Studio中提供的Git支持对于基本工作(提交/获取/合并和推送)来说已经足够了。我的建议是避免。。。
我非常喜欢GitExtensions(或者SourceTree)。因为看到DAG对了解Git的工作方式非常重要。而且你更加了解项目的其他贡献者所做的事情!
在Visual Studio中,您不能快速看到文件之间的差异或提交,也不能(添加到索引中)和提交部分修改。浏览您的历史记录也不好。。。这一切都以痛苦的经历告终!
例如,GitExtensions与有趣的插件捆绑在一起:background fetch、GitFlow,。。。现在,持续集成!
对于Visual Studio 2015的用户来说,如果安装GitHub扩展,Git正在形成。但外部工具仍然更好;-)
TortoiseGit已经成熟,我特别推荐您使用TortoiseSVN。
微软最近发布了Visual studio 2012的Git(更新2)。我还没有玩过,但这个视频看起来很有希望。
这里是一个关于如何使用VisualStudio2012中的Git的快速教程。
我在工作中对此进行了一些研究(包括Subversion和Git)。Visual Studio实际上有一个源代码管理集成API,允许您将第三方源代码管理解决方案集成到Visual Studio中。然而,出于几个原因,大多数人都不介意。
首先,API基本上假设您使用的是锁定的签出工作流。其中有很多钩子,它们要么实现起来很昂贵,要么就是在使用更现代的编辑合并工作流时变得毫无意义。
第二个(与此相关)是,当您使用Subversion和Git都鼓励的编辑合并工作流时,您实际上不需要Visual Studio集成。SourceSafe与Visual Studio集成的主要杀手在于,您(和编辑器)可以一目了然地知道您拥有哪些文件,哪些文件必须在编辑之前签出,哪些文件即使您想签出也无法签出。然后,它可以帮助您在编辑文件时执行任何需要执行的修订控制伏都教。这些都不是典型的Git工作流的一部分。
当您使用Git(通常是SVN)时,您的修订控制交互都发生在开发会话之前或之后(一旦您完成了所有工作并进行了测试)。在这一点上,使用不同的工具真的不太痛苦。你不必经常来回切换。