Visual Studio 2019中改进的Git体验

普拉蒂克·纳达戈达

上周我们发布了版本16.6 Visual Studio 2019预览版2它包含了改进后的Git体验的第一次迭代,以提高您在GitHub、Azure Repos和其他托管服务上使用代码时的工作效率。您可以在新的文档

您可以通过搜索(Ctrl+Q)来启用或禁用体验预览要素。在“选项”窗口中,只需切换新Git用户体验。我们承认该功能仍不完整,不久将有更多增强功能。但我们预计这将是未来的默认体验。因此,与此同时,我们依赖于您,社区,让我们知道我们应该优先考虑什么,以便构建您所需要的。

启用新的Git-UX预览功能

在预览功能中打开新的Git用户体验

初始化和推送

您现在可以初始化本地Git存储库,并通过单击将其直接推送到GitHub、Azure Repos或其他远程托管服务(例如BitBucket、自定义Git服务器等)。如果你有一个现有的在线项目,你可以使用内置的GitHub和Azure Repos浏览体验来克隆你的代码。

初始化存储库并将其推送到GitHub

初始化存储库并将其推送到GitHub

创建新分支

一旦您的存储库被初始化,我们希望您能够专注于日常开发工作流,而不必离开代码。您可以从新的Git菜单和Git工具窗口创建分支并提交代码更改。

创建分支并提交更改

创建分支并提交更改

管理分支机构

工具和应用程序之间的上下文切换可能是一件痛苦的事。因此,我们添加了从Git工具窗口管理分支的功能。在完成新功能或错误修复后,使用Git工具窗口中的分支下拉列表来签出、合并、重置基址、查看历史记录、重命名和删除分支。

合并和删除分支

合并分支并删除它

解决合并冲突

我们理解与您的团队合作并分享您的工作非常重要,特别是在当前的环境下增加远程工作。在保持代码最新时,可以使用Git工具窗口中的获取、拉取和推送快捷方式轻松完成。但即使您尽最大努力与最新的代码更改保持同步,有时也不可避免地会遇到合并冲突。有了改进的体验,我们已经开始让您更容易浏览和解决合并冲突。

解决合并冲突

解决合并冲突

请分享您的反馈

这只是Visual Studio中一流Git和GitHub新体验的开始。请添加或投票支持建议您希望我们构建或更改的最重要功能。

另外,请确保将这些参考图像放在手边,以便快速概述新的Git界面。

图像Git工具窗口 图像Git菜单

最后,保持安全,保持健康。

84条评论

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

  • 萨威克·罗西克 0

    就我而言,我经常重复这些步骤:
    1.提取
    2.查找远程/主分支机构或远程/开发分支机构
    3.合并自
    4.合并
    或者
    1.提取
    2.查找远程/主分支机构或远程/开发分支机构
    3.来自的新分支
    4.创建分支

    你能使它需要更少的步骤吗。一些建议:
    1.将分支标记为收藏夹,这样我就不必搜索remote/master或remote/develove,因为它们总是位于顶部。
    2.消除第二次合并点击
    3.消除远程分支的获取点击(自动执行)

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

      是的,是的,这很令人困惑,我们正在努力!

  • 史蒂夫 0

    考虑到GUI命令(例如子模块)中总是会有间隙,因此需要有一种快速的方法来打开命令提示符。
    我一直在旧的实现中使用Actions=>Open Command Prompt。

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

      我们理解这种情绪。有大量CLI命令,即使是最流行的命令也需要一些时间才能实现。我们将在Git菜单中添加一个条目,以便很快打开命令提示符!

  • 詹姆斯·查尔德科特 0

    当你正在改善VS和AzDO之间的联系时,有没有可能快速修复此反馈项目?

    基本上,如果从VS开始,用于克隆AzDO git repo的URL与从AzDO网站开始的URL不同。网站一包含一些额外的信息,帮助git凭据管理器选择正确的身份验证机制。如果没有它,LFS将陷入一个要求凭据的循环中。

  • 赫萨姆·卡谢菲 0

    支持“Git流”(有一个支持Git流的应用程序“Smartgit”)和多个来源以及分支的良好可视化表示

  • 大卫·隆德斯 0

    是否有机会使重新基准操作中使用的术语更加清晰?
    我认识的每个人(包括我自己)都本能地认为这是背对背的。

    “您确定要将YourCurrentBranch重新设置为master吗?”——本能地被理解为“您要修改master”,而实际上情况恰恰相反。

    我知道这可能是Git爱好者争论的焦点,但它不能只是说“您确定要将主分支中的最新更改应用于YourCurrentBranch吗?”?

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

      是的,我完全理解,而且这不是我们第一次听到措辞中的混淆。然而,这是行业标准的措辞,因此我们确实希望与每个人至少习惯看到的内容保持一致。我确实看到了解释实际情况的确认对话框的价值。我会调查的,谢谢!

  • 杰·阿斯伯里 0

    那么你什么时候才能让我们上演台词呢?有时,我们希望将更改分解为更精细的细节。为什么我是Git扩展的贡献者并使用它。坦率地说,您对git操作的TFS视图很糟糕。

    • 雅库布·坎普尔 0

      我很想念这个功能。不幸的是,当我需要表演台词时,我总是被迫使用另一种工具。

  • 马特·格雷厄姆 0

    首先,非常感谢您!我总是发现git的团队资源管理器设置在git上设计得很差,因为每件事都需要两倍的点击次数(或在任何其他git ui中)。

    刚刚下载了预览版来看看,并有一些想法。如果有任何计划,我们深表歉意!

    为什么主分支下拉列表没有显示选项卡远程分支?看起来您必须创建一个新分支,然后转到远程,然后选择要下拉的分支。似乎在初始分支下拉列表中有一个远程分支选项卡,您可以在其中选择远程分支,然后自动关闭并切换到它,这样效率会更高。此外,关于分支下拉列表,右键单击分支选择下拉列表中的分支也会显示该分支的菜单,因此您不必显式单击V形。

    由于它只是一个可视化的东西,我不确定我是否是顶部面板的忠实粉丝,它显示分支、状态消息和获取/拉动/按钮。大多数情况下,我并不喜欢垂直对齐的按钮。我个人认为,让状态消息行占据侧边栏的整个宽度,这样分支和按钮可以在同一条垂直线上,看起来会更好一些。

    总之,尽管如此,我是这些变化的超级粉丝!很高兴看到它朝着比团队资源管理器更好的方向发展。

  • 罗曼·雅诺夫斯克 0

    是否可以将这些功能与T4模板和DTE ExecuteCommand一起使用?例如,以便可以将新创建的文件自动添加到源代码管理中?类似于命令文件。添加到sourceControl,但这实际上是有效的…

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

      嘿,Roman,到目前为止,我们还没有这些功能的可扩展性,也不支持DTE。执行命令。如果这是您的场景的一个重要功能请求,您可以创建一个建议吗?https://aka.ms/vsfeedback网站谢谢!

  • 拉瑟·汉森 0

    我真的希望你能实现一个合适的“gitmv”来重命名。一次性重命名和更改VS中的文件总是会打破历史记录。

    我必须使用Shell来解决这个问题,这违背了集成Shell的目的。

    它已经作为一个请求发布,但似乎你不明白为什么。

    • 亚当·肖特兰 0

      同意!这是我经常遇到的一个问题,尤其是在开发周期的早期,事情很快进入树并频繁地重命名/移动,保持历史记录至关重要,尤其是当原始开发不再可用时

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

      嘿,拉塞,我听到了。尽管您尝试过在提交之前暂存重命名的文件吗?使用该解决方法,如果您暂存添加的(新文件名)和删除的(旧文件名),Git的重命名检测将运行,VS将其显示为重命名。在这种情况下,不会丢失任何历史记录。你能试试这对你有用吗?

      作为一般参考,如果它仍然是一个问题,这里是关于开发者社区的帖子-https://developercommunity.visualstudio.com/idea/731084/add-team-explorer-git-mv-support-to-moverename-fil.html。请投票!

  • Zendu公司Microsoft员工 0

    它缺少签出远程分支的基本功能。显然,新的Git UI无法实现,而旧的团队资源管理器已经失去了所有分支管理功能。

    • 格里夫 0

      完全同意–这是一个非常有限的功能,直到它让我能够签出远程分支。建议Microsoft加快此功能的发布。

    • 马特·格雷厄姆 0

      所以,你可以,但这是一个恼人的过程。首先,确保你能把遥控器拉进来,否则你就必须退出并这么做!但是点击顶部的下拉菜单选择一个分支,然后点击New branch按钮。单击Parent Branch(父分支)选项,将有一个远程选项。完成此操作后,它将默认为远程分支的名称。如果你在那里没有看到你的分支,那么你需要关闭弹出窗口并获取。

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

      是的,这是我们正在跟踪的问题(https://developercommunity.visualstudio.com/content/problem/967206/git-window-does-not-display-remote-branches-in-bra.html)该功能将在下一次预览更新中推出。感谢您的反馈!

      如果您缺少其他任何功能,并且在团队资源管理器中看不到这些功能,您可以通过关闭预览功能来恢复这些功能。请务必让我们知道它是什么,以便我们可以查看它。

      • 杰夫·辛克莱 0

        我再也找不到Git标签窗口了。我们用它来标记发布。

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

          是的,这是我们在新体验中尚未实现的东西。它在我们的路线图上!

  • Фарид Кадыров 0

    是否有计划添加对部分提交的支持,例如可以选择修改文件的一部分以包含在提交中?谢谢

  • 巴托 0

    我们能找到更好的选择来比较我们的变化吗?

    看看它是如何在Github Desktop中完成的——你可以在VS中使用上/下箭头浏览所有文件我必须右键单击每个文件,然后选择与旧版本进行比较(我假设它与TFSVC相同)

    这是令人讨厌的经历。我希望VS能像Github Desktop那样简单,重点放在代码上,而不是到处点击

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

      这是一个好观点。我们正在开发一种全屏聚焦体验,只需单击一下即可显示不同的预览。这在路线图上,但还有一段路要走。同时,通过新的Git工具窗口,我们为您提供了选择的选项。您可以单击Changes标题旁边的三个点并设置比较文件作为默认操作。这将减少您必须进行的单击次数。只需向上/向下箭头指向文件列表并按enter键即可查看差异。

  • 德里克·莫林 0

    是否有预览提交的功能?还是拉请求?

    我通常使用gittextensions对话框来立即查看/查看所有更改。

    或者在Azure Devops中的拉请求视图中一次查看/审查所有更改。

    实际上,如果有一个“预览”模式,在这个模式下,更改更改文件的焦点可以打开diff进行查看,那就太好了。

    例如,更改了四个文件

    点击向下箭头四次,滚动查看所有差异。

  • 埃里克斯-兰伯特 0

    我不喜欢现在的功能分布在两个地方。
    我认为这在当前实现中已经得到了很好的解决,因为一切都可以在团队资源管理器中完成。
    底部栏中的git状态似乎也丢失了,即使没有打开团队资源管理器,您也可以快速切换分支或转到更改或同步。
    此外,作为同时使用git和TFVC的开发人员,我喜欢TeamExplorer与其中一个一起使用时的相似性。
    另外,集成到团队资源管理器中的插件会发生什么情况?

  • 格里夫 0

    我过去常常签出一个分支,然后在团队资源管理器的主页选项卡上,我看到了该分支中的所有解决方案。

    我现在到哪里去看这些解决方案?

  • 詹姆斯·贝克 0

    如果新的“创建分支”对话框也可以有工作项选择,并基于此默认名称!这将是我有史以来最好的功能!

  • 亚当·肖特兰 0

    一些想法…

    我经常阶段化一堆本地提交并同时将其推出,现在我在哪里可以看到我的本地阶段提交?它们以前在“同步”选项卡上可见。

    我还经常使用子模块,并且必须使用Git扩展来完成任务。是否将适当的子模块支持构建到这个新体验中?对此有一个长期的反馈请求,不久前,它被更新,表示该功能将被开发,但此后就没有任何进展。

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

      感谢Adam的反馈。我们正在构建功能,从团队资源管理器中最常用的功能开始,然后是全新的功能。请投票支持并遵循开发者社区的建议。(https://developercommunity.visualstudio.com/idea/351549/full-git-submodule-support.html)这就是我们在开始开发新功能时要更新的内容。如果一个项目在我们的路线图上,那么我们可能无法立即实现,但它在我们的雷达上。

      我们还将继续在此处为路线图添加更多详细信息–https://docs.microsoft.com/en-us/visualstudio/productinfo/vs-roadmap

      • 查克·瑞恩 0

        因此,这将是一个功能的另一个部分实现,模糊承诺可能会在未来某个未定义的日期添加所需的功能,如果我们中有足够多的人没有实际工作要做,可以花时间浏览功能请求/错误报告进行投票,这样团队中的某些人可能会认为值得这样做?

        是的。

  • 迪安·杰克逊 0

    如果你登录,你的博客和每个帖子都需要很长时间才能加载。

    • 拉迪卡·塔迪纳达Microsoft员工 0

      嗨,迪恩,

      感谢您的反馈。是的,我们意识到了这个问题,过去几个月来一直在解决这个问题。虽然我们确实在报告中看到了改进,但我们知道还有很大的改进空间。我们正在进行一些即将到来的附加更改,这些更改将进一步提高登录时的页面加载时间。

  • Hieu Le公司 0

    突然,我想到了这个新的git特性。现在,我无法再从azure devops添加工作项。最左侧的按钮(Git的visual studio右侧的按钮)不再工作。我正在尝试还原并使用旧git

  • 德米特里·巴甫洛夫 0

    对于我客户端的私有存储库,我看到这些菜单项(我确实需要)被禁用:Microsoft Visual Studio Community 2019预览版(2)版本16.6.0预览版2.1中的“merge from”和“rebase to”

    为什么?如何启用它们?

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

      您可能遇到了我们看到的问题-您需要签出要合并到的分支。然后选择要合并的其他分支。如果尝试从签出的分支合并,则选项将被禁用。如果这不能解决你的问题,请告诉我。

      我意识到措辞有点混乱,我们将在下一次更新中对此进行澄清——
      “合并到当前分支”
      “将当前分支重新设置为”

  • 巴托洛米耶·奥克泽西克 0

    我们需要更好的比较选项,以审查我们的更改

    看看github桌面——它提高了生产力,因为它让我们不用对每个文件进行比较,而是使用箭头!

  • 查尔斯·罗德迪 0

    一般来说,我喜欢VisualStudio中的Git,但有些事情是可以解决的。该过程针对用户大部分时间处于脱机状态进行了优化。相反,当用户在线时,它应该针对正常情况进行优化。

    问题:1。你在一个分支上工作,其他人做出承诺。只有手动启动提取或同步,才会获得提交,从而导致冲突。2.你换了树枝,忘了取。稍后会再次发生冲突。3.您尝试切换到远程分支,但未列出。

    相反,系统应该自动获取所有内容,以便系统对所有远程分支的理解始终是最新的。当新提交进入当前分支时,或者当将分支切换到非最新的分支时,应该提醒用户。

  • 特伦斯·戈拉 0

    我错过了判断是否提交以及查看需要推送哪些提交的功能。同步对话框并非如此。

  • 加文 0

    那么Azure DevOps集成的计划是什么?这看起来像是试图将Git操作从所有工作项管理、拉请求等中分离出来,这是一个很大的倒退。这里的结局是什么?谁是这场比赛的目标观众?

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

      嘿,加文——ADO绝对是计划的一部分。这些功能将继续在Team Explorer中运行,直到我们从新的Git UX扩展对它们的支持。Pull请求和工作项以及GitHub问题都在我们的路线图上。我们缺乏GitHub功能,所以我们的第一步是将其与ADO功能相媲美。其目的是提高在任何托管服务上使用Git的开发人员的生产效率。

  • 卡梅隆·米勒 0

    不能说我喜欢。看起来有点像VS Code,除了做不同的操作外,VS Code接口是次优的。
    这让我怀念Team Explorer界面。

    我确实喜欢一些git-specifics。用不同颜色的文本突出显示提交消息框很好。

    该团队错过了IMO从远程分支机构退房的关键MVP功能。如果没有远程分支,我就不会发布这个git窗口。

    我恢复了以前的提交,我希望手动提交-恢复也会自动提交-我觉得没有给用户足够的反馈,我意外恢复了两次。

    这不仅仅是这个版本,如果抓取失败,Visual studio会说查看输出窗口,但输出窗口显示的是相同的内容,没有其他信息。(错误可能是身份验证失败或验证本地证书颁发者时出错)。这可能是一个解决问题的机会。

  • 杰夫·奎因 0

    天啊,真的不喜欢git的新体验。感觉不太直观,使用起来更笨拙。我喜欢提前获得新功能,所以我倾向于预览。我不喜欢这样,发现它影响了我的工作效率。使用了一天之后,我关闭了预览功能。我第一次这样做。

  • 霍华德·理查兹 0

    是的……我试过了,但很讨厌。

    以前常见的任务很简单:->管理分支、分支列表、签出/合并等在旧视图中很简单。“同步”选项已消失

    我已将其关闭。请不要删除旧版本,这不是改进

  • 弗拉迪米尔·苏尚 0

    首先非常感谢你的工作。
    我在Pull之前调用Fetch时缺少Incoming Commits视图。这很实际,但现在我根本找不到这个选项。

  • 肖恩·戴南 0

    VisualStudioGit支持会处理文件系统上的嵌套Git repos吗?

    这种事情:

    回购-1
    |
    +-回购-2
    |
    +-回购-3

  • 亚伦·格拉博维 0

    有一点需要注意:提交消息占位符文本(“输入提交消息(必需)或隐藏消息(可选)。”)的颜色在深色主题中更改为橙色。也许我可以习惯它,但它目前很分散我的注意力。
    之前的浅灰色更适合作为占位符文本,除非直接在上查看,否则不应引起任何注意。

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

      我们刚刚修改了字体颜色。它很快就会更新!谢谢你打电话来🙂

      • 亚伦·格拉博维 0

        伟大的!谢谢你的照顾🙂

  • circle766@yahoo.com 0

    尽管这是一个被低估的功能,但有计划支持Git Rerere(重用录制的分辨率)吗?
    谢谢!

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

      所以目前还没有计划。但请在上提交功能建议https://aka.ms/vsfeedback网站! 你永远不知道,可能会有更多的人希望得到支持,投票肯定会帮助我们优先考虑它。🙂

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

      谢谢你提出来。我们的雷达上有问题要解决!

  • 0

    我原本希望这个新的Git窗口将在16.6发布,但除非我错过了什么,否则我看不到它。我们什么时候能在GA发布中看到它?

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

      嗨,蔡——不,你没有遗漏任何东西。这是最初的计划,但还有很多要构建,所以我们打电话说,该功能集还没有为16.6版本的GA做好准备。我们正在努力添加功能并抛光一些粗糙的边缘,以根据客户反馈使其成为更完整的体验。更新后的计划是在16.7GA中作为功能标记切换发布。敬请期待!

  • toni@codessentials.de 0

    我的简短反馈:
    –我错过了分支机构概述(->“管理分支机构”)
    很容易找到
    它很容易显示所有分支
    它告诉我哪根树枝已经被推过或修剪过了

  • 贾科莫·卡佩拉里 0

    我最喜欢的一个功能是:在光标行的末尾添加有关影响它的最新提交的信息。

  • 卡尔·贝里斯福德-穆雷 0

    请,请,请添加一种方法来关闭VS中的Git。这是我所有减速和崩溃的100%原因。我不明白为什么这件事这么难做?

  • 查图兰加·班达拉 0

    在以前的版本中,当我单击“同步”选项卡时,我可以看到我的传出提交(未推送到远程的提交)更改。我只能看到三个箭头来获取/拉入/推入新体验。如何查看传出提交?

  • 迈克尔·莱尼 0

    我真的很怀念查看传出/传入提交的列表,以及分支列表。当前的分支列表仅以下拉格式提供,这确实令人沮丧。
    下拉列表中的分支也不显示哪些已同步到远程或未同步-在此之前,可以通过查看分支旁边的图标来查看。
    此外,我发现自己错过了“添加”和“修改”之间的颜色差异,因为我现在只剩下A和m

  • 布拉德·加洛韦 0

    如何查看旧的同步信息?比如,如果我进行一次提取,我如何才能看到我要提取的内容,或者如果我正在进行多次提交,我如何能够看到其中的内容?

  • 约翰·亨德森 0

    这似乎是Team Explorer的一个大降级,特别是对于DevOps用户。管理源代码管理所需的功能现在被拆分为一个菜单和一个窗格,而在这之前,它完全位于一个位置。例如,在团队资源管理器中,很容易切换到分支,您想要做的所有常见工作都在那里(创建新分支、签出分支、合并/重新设置分支)。此外,它总是提示您进行下一个可能的步骤,如同步或创建Pull Request,这是一个很好的时间节约,并且更易于使用。

    如果我要将Team Exporer更改为仅Git窗格,那么我只需执行以下操作:
    1.将快速分支更改、新分支和同步(获取、推送、拉入)添加到现有的“更改”窗格中。
    2.添加签出和拉选项。
    3.使用直接按钮/选项卡在更改、同步和分支之间切换。如果您要删除DevOps功能,那么这些是您将定期在其中切换的唯一选项卡。

    我真正希望的是能够在创建分支时将其与工作项关联。目前,您必须先创建分支,然后在提交时记住将工作项关联起来。

    我还希望有一种简单的方法来强制它停止提交到受DevOps中分支策略保护的分支。

    只要试着记住,有很多开发人员只有非常基本的Git知识,并且在一定程度上受益于一个简单的UI(我不想把所有时间都花在解决Git问题上)。

反馈usabilla图标