在Visual Studio中使用Git [关闭]


1455

作为Visual SourceSafe的长期用户(讨厌),我正在与一位同事讨论切换到SVN的问题。他建议改为使用Git。因为显然,它可以在没有中央服务器的情况下用作对等网络(我们是3开发人员团队)。

但是,我无法找到有关将Git与Visual Studio集成的工具的任何信息-是否存在这种东西?

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


4
我刚刚为VS 2010添加了Git源代码控制提供程序,因此它仍然可以正常工作。
Wade73'9

3
从VS团队查阅教程。下次更新;VS 2012的Update 2即将推出。您还可以从此处下载VS2012的社区技术预览(CTP)。另外,如果您使用CMMI,Agile,Scrum 1/2等,则可以注册免费帐户(公共或私有云实例)并邀请成员(团队成员,客户)在基于Web的TFS tfs.visualstudio
Annie 2013年

3
我已经使用Visual Studio和git两年了。我想说,解决此问题的最佳方法是仅使用单独的源代码控制应用程序,例如Atlassians SourceTree。它是免费的,易于安装的,具有良好的GUI且易于使用,您可以浏览多个存储库(也称为不同的项目),就像在Chrome中浏览网络一样,并且最重要的是,它支持多个源代码控制系统。试试看!我向您保证,您不会失望的!
Fazi 2014年

2
从Visual Studio 2013开始本地支持Git
rustyx 2015年

17
我喜欢1342人如何反对这个问题,并且有一些白痴反正将其关闭。好的StackOverfolow...。如果这么多人觉得它不那么有用,那又不符合SO的标准怎么办?这个网站的重点不是要有用吗?
thebunnyrules

Answers:


1070

2013年1月,Microsoft 宣布他们将在其所有ALM产品中添加完整的Git支持。他们已经发布了 Visual Studio 2012 插件,其中添加了Git源代码控件集成。

另外,还有一个名为Git Extensions的项目,其中包括Visual Studio 2005、2008、2010和2012的加载项以及Windows Explorer集成。它会定期更新,并在几个项目中使用过,我发现它非常有用。

另一个选择是Git Source Control Provider


9
ted.dennison:根据此页面(code.google.com/p/gitextensions),它是VS 2005/2008插件。
乔纳斯(Jonas)

10
更正一下-来源托管在Github上,MSI不是。
克里斯·S

5
我已经安装了git扩展,它可以在Visual Studio中使用,并且不能完全集成。是否有一种解决方案可以从解决方案资源管理器中签入签出?
Dani

4
Dani,某人正在为VS开发Git源代码控制提供程序,该提供程序似乎提供了更深层次的集成:gitscc.codeplex.com
Jon Rimmer

3
VS 2012有什么选择吗?
Earth Engine

202

我将Git与Visual Studio一起用于协议缓冲区到C#的端口。我不使用GUI-我只是保持命令行打开以及Visual Studio。

在大多数情况下都可以-唯一的问题是当您想重命名文件时。Git和Visual Studio都希望它们是重命名它的人。我认为在Visual Studio中重命名是解决问题的方法-请小心之后在Git方面的操作。尽管过去这有点麻烦,但我听说它在Git方面实际上应该是无缝的,因为它可以注意到内容几乎是相同的。(通常不完全相同-重命名IME类时,您倾向于重命名文件。)

但基本上-是的,它工作正常。我是Git新手,但是我可以让它完成我需要做的所有事情。确保您有一个bin和obj的git忽略文件,以及* .user。


35
git应该可以和VS一起重命名。为了在git日志中进行良好的重命名跟踪,您只需要确保在更改的“删除”部分中执行与“添加”部分相同的提交即可。如果您的.gitignore是最新的,则git add -A使此操作变得容易。
CB Bailey

40
我也是git新手,说实话,我更喜欢从命令行使用它。我有点害怕将git的功能处理到试图变得“聪明”并在背后做一些“魔术”的GUI。
hasen

1
感谢您的建议。我只是搬到了git(和github),再也不会回头了。我的客户使用perforce(ugh!)。所以我的计划是使一个结账是Perforce,做我用git的工作,然后检查回。
马克·贝克威思

7
@CallMeLaNN:您在这里做一个很大的假设,因为有关Git的新手在使用命令行时会遇到困难。请看2009
Jon Skeet 2010年

我通常会添加.user,*。suo,bin,obj,和_ *到我的忽略列表...如果要添加以上内容之一,我仍然可以手动添加。
Tracker1 2011年


53

我已经在工作中研究了这一点(包括Subversion和Git)。Visual Studio实际上具有一个源代码管理集成API,使您可以将第三方源代码管理解决方案集成到Visual Studio中。但是,出于几个原因,大多数人都不会理会它。

首先,API几乎假定您正在使用锁定结帐工作流程。其中有很多挂钩,要么实现起来很昂贵,要么在您使用更现代的编辑合并工作流时放任不管。

第二个(相关的)是当您使用Subversion和Git都鼓励的编辑合并工作流时,您实际上并不需要 Visual Studio集成。SourceSafe与Visual Studio集成的主要杀手之处在于,您(和编辑器)可以一目了然地告诉您拥有的文件,必须先将其签出才能进行编辑,以及即使您想要也不能签出。然后,它可以帮助您执行想要编辑文件时需要执行的任何版本控制巫毒。这些都不是典型的Git工作流程的一部分。

当您使用Git(通常是SVN)时,所有版本控制交互都发生在开发会话之前或之后(一旦一切正常工作并经过测试)。到那时,使用其他工具确实没有太多麻烦。您不必经常来回切换。


22
你们不曾移动或重命名文件/目录吗?我几个月前开始使用VisualSVN,但我再也回不去了。
JohnOpincar

10
@TED对我来说,这意味着在长时间的开发之后,您必须记住每个文件更改的原因,直到您检入为止。修复,然后检查一下是否可以清除内存中的更改。我宁愿在VS
Peter M

4
Git Extensions Visual Studio插件不会试图将自己塞入Microsoft提供的老式锁定结帐源代码控制API中。它非常适合于编辑合并工作流,并且基本上只在IDE内部添加了提交/推送/拉取和文件历史记录。在上下文菜单上具有文件历史记录非常有用!
Jacob Stanley

3
我不同意这一点,主要是因为不得不离开Visual Studio进行登记会导致登记之间的时间更长。一天开始时已经结帐的人太多,直到结束(或更糟的几天后)才签到。与Visual Studio集成可让您不断将源代码控制保留在工作流程中。
克里斯·麦格拉思

8
从VS2005(VS2003?)开始,Visual Studio源代码控制集成并不特别倾向于签出签入模型。以AnkhSVN为例。我更喜欢VS集成,因为这样重命名等操作会更流畅。
罗杰·利普斯科姆2010年

38

我发现Git可以像在整棵树上一样工作,而与基于文件或遵循checkout-edit-commit模式的源代码控制工具相比,它从IDE集成中受益较少。当然,在某些情况下,单击按钮进行历史检查可能会很不错,但是我并不太会错过。

真正的必须要做的是让您的.gitignore文件充满不应该存在于共享存储库中的内容。我的(通常包括)以下内容:

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

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

我的使用模式如下所示。

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

  2. 当高兴时(明智的中间点来提交代码),切换到Git,进行更改并检查差异。如果显然有任何错误,请切换回Visual Studio并进行修复,否则进行提交。

在命令提示符下,可以在Git中轻松进行任何合并,分支,变基或其他精美的SCM内容。Visual Studio通常对其中的更改感到很满意,尽管如果您对项目文件进行了重大更改,有时它可能需要重新加载某些项目。

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


11
您没有,您绝对应该在版本控制下控制您的项目文件。
CB Bailey 2009年

1
这非常重要-至少可以说,一旦开始提交,就可以从忘记忘记在.gitignore中包含某些内容恢复过来,至少可以说是痛苦的……
Benjol 2010年

3
@Benjol:不应该那么痛苦。你只需要git rm <file>echo <file> >>.gitignore; git add .gitignore你的活跃的分支的提示。提交更改后,您始终可以将修补程序挑选到其他分支上。
CB Bailey 2010年

1
@Charles贝利,看到在这个问题上我的故事:stackoverflow.com/questions/1887049/...
Benjol

9
@Mike Brown:他忽略了* .user文件,这是用户特定的设置。
Srdjan Jovcic


28

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


是的,这是一个不错的用户界面,但不是,它没有与Visual Studio集成。
Scott Rippey

3
Git源代码管理提供程序将TortoiseGit命令添加到Visual Studio的上下文菜单中。
HotN

26

Microsoft提供了一个适用于GitVisual Studio工具。但是,它仅支持Visual Studio 2012(更新2)。


对于Visual Studio 2012,这是最佳答案。看来他们在实现上花了很多功夫,以我的经验,它按预期工作!
RoelF

2
我还无法弄清楚如何配置Microsoft的“ Visual Studio Tools for Git”以使用私有的Github存储库。您是否看到过任何文档或教程?
golliher

我建议先查看marketplace.visualstudio.com/…中的评论部分,然后再决定安装它。
QMaster


18

Microsoft在Visual Studio中完成的对Git的支持足以满足基本工作(提交/获取/合并和推送)。我的建议是避免这种情况...

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

在Visual Studio中,您无法快速查看文件或提交之间的差异,也无法(仅添加到索引中)仅提交部分修改。浏览您的历史记录也不是一件好事……所有这些都以痛苦的经历而告终!

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

对于Visual Studio 2015的用户,如果您安装GitHub扩展,Git即将成形。但是外部工具还是更好;-)


与2015年相比,GitExtensions对您有用吗?菜单对我不起作用github.com/gitextensions/gitextensions/issues/2815
raklos




10

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


好一个 我不知道是谁在测试和批准用户界面...所有消息都非常令人困惑...我唯一的猜测是他们急忙将其推出并查看用户抱怨的原因。
ramnz

10

当前,Visual Studio(2010和12)中的Git Source Control有2个选项:

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

我都尝试过,发现第一个更成熟,并且具有更多功能。例如,它在乌龟git和git扩展名中都可以很好地发挥作用,甚至可以公开它们的功能。

注意:无论使用哪种扩展名,请确保都启用了该扩展名Tools -> Options -> Source control -> Plugin Selection才能正常工作。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.