在Visual Studio中使用Git提高生产效率

普拉蒂克·纳达戈达

我们将继续增强Visual Studio中的Git体验,并很高兴宣布一些期待已久的版本更新16.10预览2。您可以下载最新的预览版,并与主版本一起运行,使生产安装不受干扰。

在上一次迭代16.9中,我们听取了您的反馈并专注于在首次公开发布Git体验。在16.10中,我们构建了新的功能来解决周围的差距可发现性,交换存储库,航行,等等!

16.10预览2中的增强Git工具
Git增强功能概述(扩大)

状态栏

第一组更改是状态栏。IDE窗口右下角的状态栏部分有一个总是可以访问的Git命令托盘。我们开始在那里扩展功能。

分支选择器

从最右边的按钮开始,众所周知的分支选择器现在看起来类似于Git Changes窗口中的分支下拉列表。通过这个可视化的检修,您可以访问搜索分支,并可以查看本地和远程分支。上下文菜单为您提供了要在分支上执行的操作,无论您看到的是哪个工具窗口。

图16 10 P2状态栏分支选择器

状态栏中的分支选择器

存储库选取器

现在,状态栏中的“存储库”按钮在您选择它时具有存储库选择器的第一次迭代。您可以看到按字母顺序排序的所有本地存储库,也可以筛选列表。很快,你就能删除个项目从这个列表中。

图16 10 P2状态栏回购拾取器

状态栏中的存储库选择器

打开存储库

每当您第一次在Visual Studio中打开版本控制的文件夹或解决方案时,您将看到关联的Git存储库及其任何嵌套子存储库都显示在本地存储库列表中。如果存储库的远程托管在Azure DevOps上,您将在Git Changes中得到一个提示,以连接到Azure DevOps项目。这样做将允许您访问项目的工作项和生成。建立初始连接后,VisualStudio会记住它,以便下次打开存储库时自动连接。

图16 10 P2连接ado

用于建立与Azure DevOps项目的初始连接的信息栏

解决方案列表

默认情况下,无论何时打开存储库,Visual Studio都会在解决方案资源管理器中加载关联的解决方案/文件夹。如果存储库中有多个解决方案,则“解决方案资源管理器”会显示解决方案列表。

图16 10 P2解决方案列表

解决方案资源管理器中存储库的解决方案列表

自定义存储库行为

这里有一些细微差别。通常,VisualStudio将保持开放存储库和开放解决方案之间的一致性,以便它们永远不会不同步。例如,如果您切换到另一个存储库,则打开的解决方案将关闭,而新解决方案将打开。但我们已经看到了情况解决方案可能位于Git存储库之外。如果是这样,那么在打开存储库时,您会希望保持解决方案处于打开状态,即使它们位于不同的文件夹中。现在,您可以通过在Git>Settings中切换新的首选项来自定义该行为。 

图16 10 P2关闭sln设置

切换存储库时选择是否关闭解决方案的首选项

我们还得到了反馈一些开发人员喜欢在开始编码之前使用VisualStudio作为Git工具。例如,您可能希望在打开解决方案或文件夹之前更改分支或请求提交。我们在这里提供帮助的第一步是提供一个选项,只打开存储库,而不打开其中的任何代码文件。这将使Visual Studio本质上成为一个仅支持Git的工具。如果要打开代码文件,则可以稍后加载解决方案或文件夹。

图16 10 P2打开文件夹设置

打开存储库时加载代码的首选项

挂起的更改

状态栏中的“更改”按钮显示尚未提交的已更改文件数。它提供了一个打开Git Changes窗口的快捷方式。

图16 10 P2未决更改

打开Git更改窗口的按钮

同步提交

状态栏中的最后一个按钮显示Git远程操作。此按钮显示尚未推送到远程的提交数。很快,它还会向您显示未执行的提交的数量。当您单击此按钮时,您将看到一个新的弹出按钮,其中包含Fetch、Pull、Push和Sync命令大众需求)!

图16 10 P2状态栏同步

具有同步功能的传出/传入提交下拉列表

Sync是Synchronize的缩写,是Pull和Push的组合。Sync命令的另一个好处是,它可以一键将本地分支与远程分支同步。该命令也可以在顶级Git菜单中使用,它允许Sync使用自己的键盘快捷键(Alt+G+S)进行快速访问。如果您忘记了它的位置,它还可以在Ctrl+Q搜索框中进行搜索。

图16 10 P2 git菜单

Git菜单中的同步命令

Git Repository窗口

传入/传出提交

在Git Repository窗口中您首先会注意到的是传入和传出提交列表的永久主页。现在,您可以从状态栏和键盘快捷键Ctrl+0+Y访问这些部分。这些部分为您提供了尚未推送或拉入的所有提交的概述。当您选择Fetch时,它将填充Incoming部分。进行本地提交将填充Outgoing部分。

图16 10 P2输入段

Git Repository部分中永久Incoming和Outgoing部分中的Fetch、Pull和Push按钮

嵌入式提交详细信息

查看传出提交后,您可能要做的下一件事是检查提交中有哪些更改。以前,选择提交将打开一个新的工具窗口,然后选择一个特定文件来查看更改将打开另一个窗口。窗户太多了!因此,我们将所有功能嵌入到一个窗口中。您将能够看到提交的详细信息和第一个文件中的更改的视觉效果。您可以向下查看文件列表并查看每个文件中的更改。在比较两次提交时,窗口的工作方式相同。

图16 10 P2嵌入式提交详细信息

Git Repository窗口中的嵌入式提交详细信息和内联文件差异

如果您想获得提交详细信息的全屏视图,甚至可以在不同的屏幕上弹出几个不同的提交来深入研究更改,您也可以这样做!您可以完全控制窗口的布局。

文件比较顶部的工具栏为您提供了有用的信息。左侧的符号告诉您所选提交在文件中删除和插入的次数。通过使用右侧的操作,可以将布局从并排视图更改为内联视图和其他视图。

图16 10 P2弹出提交

弹出式选项卡,用于提交详细信息和并行文件差异

Git更改窗口

我们已经将Git Changes窗口状态部分的按钮合并到右上角的一个溢出菜单中。从这里,您可以管理多个远程(如果有)并对其执行操作。该菜单还允许您访问用于导航和打开与存储库相关的其他窗口的命令,如“设置”、“分支历史记录”、“文件资源管理器”和“命令提示符”。

图16 10 P2 git更改操作菜单

Git Changes窗口中的Action菜单

了解更多信息

每一次新的体验都会改变肌肉记忆。我们认为提供关于如何使用任何新工具的最新指导很重要。为此,我们创建了免费在线课程通过逐步练习在Visual Studio中学习Git。我们的文档还更新了有关版本控制的更多文章。

无论您是否从开始或者现在就加入我们,只是要知道还有很多事情要做。我们计划构建许多有价值的功能,以帮助您在VisualStudio中使用Git存储库。为了帮助我们优先考虑,请继续投票功能请求,让我们知道我们在做什么!

21条评论

讨论结束。登录以编辑/删除现有评论。

  • 乔里斯·科默伦 0

    你知道什么对git生产力真正有好处吗?

    子模块支持https://developercommunity2.visualstudio.com/t/full-git-submodule-support/351549?from=email&viewtype=all#t-1340880新西兰元

    这已经在“路线图”上出现多年了,开发人员也一直在要求。停止重写基本的git体验,让事情变得更好,并开始包括这一点,这是开发人员真正受阻的!!与根本没有版本控制相比,能够更容易地切换到分支或回购并不重要

    如果你不知道,请读故事,传播信息。

    如果你不喜欢点击链接,这是我去年11月重写“git体验”时的最后一次回复:

    “我真的很想知道有多少人真正关心TFS的功能对等性,或者重新设计Git工作流程(比如最近的更新),而实际上不正确支持子模块会不断破坏体验。

    例如:查看位于子模块中的项目的历史记录?不可能。查看子模块中的更改(即使是意外)?不可能。从子模块中提取变化?不可能。子模块的切换分支?不可能。解决部分子模块中的冲突?不可能。

    这里有太多的收获。为此,我们必须求助于第三方工具,这仍然需要在应用程序之间不断切换,并打开多个VisualStudio实例来解决冲突。不太实用,尤其是在1个屏幕上。”

    (仅这篇帖子就获得了26张支持票,这些支持票来自那些还没有放弃的开发者)

    我知道,选择您喜欢实现并符合简单设计的开发内容更容易,但这并不容易。但这一点被忽视的时间越长,实施起来就越困难。我们都是开发人员,我们都知道这一点。停止梦想,开始建设。拜托!!!!

    • 普拉蒂克·纳达戈达Microsoft员工 0

      是的,绝对正确,你的所有观点都是对的。这是一个很难解决的复杂问题。我们已经开始了这条道路多回购支持。我们相信这将直接带来很棒的子模块体验。

      • 乔里斯·科默伦 0

        感谢多年来最有用的答案!🙂

        我希望至少首先实现子模块中文件的历史/Git日志支持。但完整的方案将令人惊叹。

        如果你需要灵感:在我们看来,至少SmartGit的GUI体验对我们有效(所以基本上使用颜色来指示部分子模块处于与父repo引用的不同的状态,这是一种简单的恢复方法)

        • 马雷克·伊什塔瓦内克 0

          是的,我们需要子模块支持。
          正如Joris Kommeren所描述的那样,我们还使用了多个VisualStudio实例,其中包含与外部批处理脚本和git工具一起加载的子模块,从而使工作成为可能。

          谢谢您

          马雷克·伊什塔瓦内克

  • 地塞米松 0

    如何查找所有git标记

  • 史蒂夫·希金 0

    当你第一次将解决方案签入本地源代码管理时,这个新版本最终会允许你在Azure DevOps上的对话框中创建一个远程回购吗?而今天你只能选择使用Github,而在git体验之前,你可以从两者中选择?

  • Андрій Чебукін 0

    嵌入式提交详细信息非常棒!谢谢。
    完整的历史视图也很好。

    • 格兰杰·戈德博尔德 0

      我强烈反对。

      是否希望“Git Repository窗口中的嵌入式提交详细信息和文件比较”功能有一个选项,以便可以恢复到(上级)16.10.0之前的行为?(我不知道该在哪里建议这样的事情;我不知道本周哪个“声音”网站有效,甚至不知道这种模式是否再次改变。)

      1.我无法再使用我选择的差异引擎;内置工具明显不如我的外部工具。
      2.将其更改为文档窗口而不是停靠选项卡会对我的工作流产生负面影响;它让我慢下来,让事情变得更加混乱。当我查看提交或在两个选定提交之间进行更改时,这是一个相切/增强操作,而不是公理。强制它覆盖我的主窗口窗格(通常是历史记录)会从UI中删除/隐藏上下文信息,使[Ctrl]+[Tab]状态显著复杂化。根据具体情况,鼠标移动更大,这增加了我手上的物理RSI问题(例如,diff区域现在水平受限,因为它与VS工作区布局的其余部分共享窗口窗格空间)。

  • 普拉文·波图鲁 0

    我经常遇到的一个次要但重要的问题是,每当我在visual studio外部进行git更改时,分支窗口都会刷新,首先清除提交列表并重新填充它。我希望看到它通过添加/删除/更新提交来更新现有视图。

    • 普拉蒂克·纳达戈达Microsoft员工 0

      感谢您的反馈。我可以理解,由于刷新,感觉很慢。我创建了一个功能请求以帮助我们跟踪改善对速度的感知。请投票表决。

  • 雅各布·斯坦姆 0

    除了糟糕的标签支持,我很喜欢这个新体验!您知道是否支持批量删除分支吗?分支清理是一项繁琐的工作,传统上是Git中最辛苦的部分之一。使用多个分支进行批量删除将非常容易。

    • 普拉蒂克·纳达戈达Microsoft员工 0

      谢谢!我们正在考虑可能同时引入该功能多分支图。但针对以下内容的具体功能建议删除多个分支需要一些爱。请投赞成票!

      如果您可以指定要对新功能请求。您已经能够在VS中创建和推送标记。

  • Fakhrulhilal Maktum公司 0

    我喜欢并排的差异。如果你能在右边编辑它,那就太好了。

    • 普拉蒂克·纳达戈达Microsoft员工 0

      感谢您的反馈,我本以为我们已经收到了此功能请求,但我找不到。所以我创建了一个新的让你投票表决。

  • 史蒂文·拉斯穆森 0

    请确保将“同步”按钮重新添加到“Git更改”窗口中其他按钮(获取、拉动、推动)旁边。正如产生此功能的建议中所提到的,这是我们许多开发人员居住的地方,在创建“Git Changes”窗口之前使用的当前“Team Explorer”窗口中也存在类似的按钮。

  • 奥利·菲利普丘克 0

    在团队资源管理器中,我只需单击两次即可从主节点合并到分支节点。使用Git expirience我需要使用bash?一些无用的创新…

反馈usabilla图标