题 在Visual Studio中使用Git [关闭]


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

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

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


1401
2018-02-03 14:46


起源


我刚刚为VS 2010添加了Git源代码控制提供程序,所以它仍然有效。 - Wade73
看看这个 来自VS团队的教程。下一次更新; VS 2012的更新2现在即将到来。您也可以从下载VS2012的社区技术预览(CTP) 这里。或者,如果您进入CMMI,Agile,Scrum 1/2等,您可以注册免费帐户(公共或私有云实例)并邀请成员(团队成员,客户)到基于Web的TFS上的项目 tfs.visualstudio.com - Annie
我已经使用Visual Studio和git两年了。我想说这个问题的最佳解决方案是使用像Atlassians SourceTree这样的独立源代码控制应用程序。它免费,易于安装,具有良好的GUI并且用户友好,您可以浏览多个存储库(也称为不同的项目),就像您在Chrome中浏览网页一样,最重要的是,支持多个源控制系统。试一试!你向我保证,你不会失望的! - Fazi
支持Git 本地 从Visual Studio 2013开始 - rustyx
我喜欢有1342人提出这个问题,而且有些白痴无论如何都会关闭它。好的StackOverfolow ....如果不是符合SO的标准,如果有这么多人发现它如此有用,那有什么关系。这个网站的意义不是很有帮助吗? - thebunnyrules


答案:


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

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

另一种选择是 Git源代码控制提供商


1056
2018-02-03 15:07



哦。谢谢。我不认为任何这些东西能用VS2005吗? - T.E.D.
ted.dennison:根据这个页面(code.google.com/p/gitextensions)它是一个VS 2005/2008插件。 - Jonas
为了纠正自己 - 源代码托管在Github上,而MSI则不是。 - Chris S
我已经安装了git扩展,它可以“通过”visual studio工作,而不是完全集成。是否有解决方案可以从解决方案资源管理器中签入 - 签出? - Dani
Dani,有人正在为VS的Git源代码控制提供商工作,它似乎提供了更深层次的集成: gitscc.codeplex.com - Jon Rimmer


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

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

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


195
2018-02-03 14:51



使用VS进行重命名时,git应该没问题。要在git日志中进行良好的重命名跟踪,您只需确保在与“添加”部分相同的提交中暂存更改的“删除”部分。如果您的.gitignore是最新的,git add -A可以轻松实现。 - CB Bailey
我也是一个git新手,并告诉你真相我 比较喜欢 从命令行使用它。我有点害怕处理GUI的git力量,试图“聪明”并在我的背后做一些“魔术”。 - hasen
感谢您的建议。我刚搬到git(和github),永远不会回头。我的客户使用perforce(呃!)。所以我的计划是从perforce进行一次结账,用git做我的工作,然后再检查一下。 - Mark Beckwith
@CallMeLaNN:你在那里做了一个很大的假设,关于Git在使用命令行时遇到困难的新手。从2009年4月开始看看hasan j的评论。 - Jon Skeet
我经常加 .user,* .suo,bin,obj ,. 和_ *到我的忽略列表...如果我想添加以上其中一个,我仍然可以手动添加它。 - Tracker1


Git源代码控制提供商 是一个新的插件,它将Git与Visual Studio集成在一起。


90
2018-05-31 22:16



有没有机会让它在2005年运作? - Art
好。 TBH的图形界面正是我在VS 2010中搜索git的GUI时所寻找的。感谢您发布此内容。其他答案不是我需要的。与VisualSVN相比,它们很差。 - JDPeckham


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

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

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

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


52
2018-02-03 15:13



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


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

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

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

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

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

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

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

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

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


37
2018-02-03 15:09



你没有,你绝对应该在版本控制下拥有你的项目文件。 - CB Bailey
这非常重要 - 一旦你开始提交和分支,忘记在.gitignore中包含一些内容就会很痛苦,至少可以说...... - Benjol
@Benjol:不应该那么痛苦。你只需要 git rm <file> 和 echo <file> >>.gitignore; git add .gitignore 在您的活动分支的提示。一旦你做出改变,你就可以随时挑选修复到其他分支。 - CB Bailey
@Charles Bailey,看看我在这个问题上的冒险经历: stackoverflow.com/questions/1887049/... - Benjol
@Mike Brown:他忽略了* .user文件,这是用户特定的设置。 - Srdjan Jovcic


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

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


31
2018-01-30 23:10



我推荐这个,因为它是微软官方产品。它可以安装在VS 2012 Express和 - Cheung


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


28
2018-05-26 01:21



是的,这是一个很好的用户界面,但不,它没有与Visual Studio集成。 - Scott Rippey
Git Source Control Provider将TortoiseGit命令添加到Visual Studio的上下文菜单中。 - HotN


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


26
2018-01-30 17:32



对于visual studio 2012,这是最好的答案。看来他们在实施过程中付出了很多努力,根据我的经验,它按预期工作! - RoelF
我无法弄清楚微软如何配置“Visual Studio Tools for Git”来使用私有Github仓库。你有没有看到任何文档或教程? - golliher


Visual Studio 2013本身支持Git。

官方公告


18
2017-11-10 10:28





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

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

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

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

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


18
2017-12-09 16:20



GitExtensions在2015年对你有用吗?菜单对我不起作用 github.com/gitextensions/gitextensions/issues/2815 - raklos


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


15
2018-05-30 11:00