在Visual Studio中使用Git

Her*_*ill 1452 git visual-studio

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

我无法找到任何关于将Git与Visual Studio集成的工具,但这样的事情是否存在?

在Visual Studio中使用Git有哪些技术可用?在开始之前,我需要了解它们之间的区别?

Jon*_*mer 1070

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

或者,有一个名为Git Extensions的项目,包括Visual Studio 2005,2008,2010和2012的加载项,以及Windows Explorer集成.它经常更新并在几个项目中使用它,我发现它非常有用.

另一个选择是Git Source Control Provider.

  • 为了纠正自己 - 源是在Github上托管,MSI不是. (10认同)
  • ted.dennison:根据这个页面(http://code.google.com/p/gitextensions/),它是一个VS 2005/2008插件. (9认同)
  • 我已经安装了git扩展,它可以"通过"visual studio工作,而不是完全集成.是否有解决方案可以从解决方案资源管理器中签入 - 签出? (5认同)
  • Dani,有人正在为VS的Git源代码控制提供商工作,似乎提供了更深层次的集成:http://gitscc.codeplex.com/ (4认同)
  • VS 2012有什么选择吗? (3认同)
  • @EarthEngine昨天MS为git发布了一个插件!http://www.hanselman.com/blog/GitSupportForVisualStudioGitTFSAndVSPutIntoContext.aspx (3认同)
  • Vertis:TortoiseGit已经有一段时间了...... (2认同)

Jon*_*eet 202

我使用Git和Visual Studio将Protocol Buffers的端口转换为C#.我不使用GUI - 我只是保持命令行打开以及Visual Studio.

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

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

  • 我也是一个git新手,并告诉你实话我*喜欢*从命令行使用它.我有点害怕处理GUI的git权力,试图"聪明"并在我的背后做一些"魔术". (40认同)
  • 使用VS进行重命名时,git应该没问题.要在git log中进行良好的重命名跟踪,您只需确保在与"添加"部分相同的提交中暂存更改的"删除"部分.如果您的.gitignore是最新的,git add -A可以轻松实现. (35认同)
  • @CallMeLaNN:你在那里做了一个很大的假设,关于Git在使用命令行时遇到困难的新手.从2009年4月开始看看hasan j的评论. (7认同)

小智 93

Git Source Control Provider是一个新的插件,它将Git与Visual Studio集成在一起.

  • 好.TBH的图形界面正是我在VS 2010中搜索git的GUI时所寻找的.感谢您发布此内容.其他答案不是我需要的.与VisualSVN相比,它们很差. (3认同)

T.E*_*.D. 53

我在工作中看到了这一点(包括Subversion和Git).Visual Studio实际上有一个源代码控制集成API,允许您将第三方源代码控制解决方案集成到Visual Studio中.然而,由于几个原因,大多数人都不打扰它.

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

第二个(相关的)是当你使用Subversion和Git都鼓励的编辑 - 合并工作流时,你并不需要 Visual Studio集成.SourceSafe与Visual Studio集成的主要杀手点是,您(和编辑)可以一目了然地告诉您拥有哪些文件,在编辑之前必须先检出哪些文件,即使您想要查看也无法检出.然后它可以帮助您在编辑文件时执行您需要执行的任何修订控制伏都教.这些甚至都不是典型Git工作流程的一部分.

当您使用Git(或典型的SVN)时,您的修订控制交互都发生在开发会话之前或之后(一旦您完成所有工作和测试).那时使用不同的工具真的不是太痛苦.你不是经常来回切换.

  • 难道你们不移动或重命名文件/目录吗?几个月前我开始使用VisualSVN,我再也不能回去了. (22认同)
  • @TED对我而言,这意味着经过长时间的开发,您必须记住每次更改文件的原因,直到您办理登机手续.如果我正在处理某些事情并看到需要在不相关的区域修复的内容,我想查看,知道我可以从记忆中清除这种变化,然后检查并检查.我宁愿在VS内做这件事 (10认同)
  • 从VS2005(VS2003?)开始,Visual Studio源代码控制集成并不特别倾向于checkout-checkin模型.以AnkhSVN为例.我更喜欢VS集成,因为然后重命名等更顺畅. (8认同)
  • Git Extensions Visual Studio插件不会试图将自己用于微软提供的旧学校锁定结账源控制API.它非常适合编辑合并工作流,基本上只是在IDE中添加提交/推送/拉取和文件历史记录.在上下文菜单中拥有文件历史记录非常有用! (4认同)
  • 我不同意主要是因为不得不离开视觉工作室办理登机手续,这样可以在办理登机手续之间鼓励更长时间.太多人已经在一天开始时结账,并且在结束之前(或更糟糕的日子之后)不会办理登机手续.与visual studio集成,可以让您始终将源代码控制保留在工作流程中. (3认同)

CB *_*ley 38

我发现,与整个树一样工作的Git,与基于文件或遵循checkout-edit-commit模式的源控制工具相比,IDE集成的好处更少.当然有些情况下单击按钮进行历史检查可能会很好,但我不会错过这一点.

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

*.vcproj.*.user
*.ncb
*.aps
*.suo
Run Code Online (Sandbox Code Playgroud)

但这很大程度上是C++的偏见,几乎没有使用任何类向导样式功能.

我的使用模式类似于以下内容.

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

  2. 快乐时(明智的中间点提交代码,切换到Git,阶段更改和审查差异.如果有什么显然错误切换回Visual Studio并修复,否则提交.

任何合并,分支,rebase或其他花哨的SCM东西在命令提示符下都很容易在Git中完成.Visual Studio通常对在其下发生变化的事情感到相当满意,尽管如果您已经显着更改了项目文件,它有时可能需要重新加载一些项目.

我发现Git的有用性超过了没有完全IDE集成的任何轻微不便,但它在某种程度上是一个品味问题.

  • 你没有,你绝对应该在版本控制下拥有你的项目文件. (11认同)
  • @Mike Brown:他忽略了*.user文件,这是用户特定的设置. (9认同)
  • @Benjol:不应该那么痛苦.你只需要`git rm <file>`和`echo <file> >> .gitignore; git在你的活动分支的提示上添加.gitignore`.一旦你做出改变,你就可以随时挑选修复到其他分支. (3认同)

Cha*_*dra 31

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

这是一个关于如何使用Visual Studio 2012中的Git 的快速教程.


小智 28

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

  • Git Source Control Provider将TortoiseGit命令添加到Visual Studio的上下文菜单中. (3认同)

She*_* 蒋晟 26

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

  • 我无法弄清楚微软如何配置"Visual Studio Tools for Git"来使用私有Github仓库.您是否看过任何文档或教程? (2认同)

rhu*_*hes 19

Visual Studio 2013本身支持Git.

官方公告.


Phi*_*ppe 18

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

我非常喜欢GitExtensions(或者比例较低的SourceTree).因为看到DAG对我来说非常重要,要了解Git的工作原理.而且您更了解项目的其他贡献者所做的事情!

在Visual Studio中,您无法快速查看文件或提交之间的差异,也不能(添加到索引)并仅提交部分修改.浏览你的历史也不好......所有这些都以痛苦的经历结束!

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

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


小智 15

最新版本的Git Extensions现在支持Visual Studio 2010(以及Visual Studio 2008Visual Studio 2005).

我发现使用Visual Studio 2008相当容易,并且Visual Studio 2010中的界面似乎相同.


Sur*_*Rat 15

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


Dal*_*oft 14

实际上运行良好的最简单的解决方案是将TortoiseGit命令添加为外部工具.

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


小智 10

正如Jon Rimmer所提到的,你可以使用GitExtensions.GitExtensions可以在Visual Studio 2005和Visual Studio 2008中运行,如果您手动复制和配置.Addin文件,它也可以在Visual Studio 2010中运行.


Tar*_*run 10

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

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

我已经尝试了两个,并且发现第一个更成熟,并且具有更多功能.例如,它可以很好地兼顾togise git和git扩展,甚至可以暴露它们的功能.

注意:无论您使用哪种扩展程序,请确保启用它Tools -> Options -> Source control -> Plugin Selection以使其正常工作.