【译】使用 Visual Studio 2026 简化您的 Git 工作流程

您是一名 .NET 开发人员,早上忙得不可开交,这时 Azure DevOps 上出现了一个工单:“登录请求报 500 错误。”您必须在午饭前解决这个问题、审查队友的功能分支并保持仓库整洁。Visual Studio 的 Git 工具将这种日常的 Git 工作流(创建分支、暂存更改、提交以及处理 PR)变成了一个流畅、快速的过程。

让我们模拟一下您的早晨,看看 Visual Studio 是如何消除 Git 带来的麻烦的。

上午 9:00:为您的 bugfix 创建一个分支

您的仓库已在 VS 中打开(View → Git Repository),您处于 main 分支,刚完成昨晚的持续集成。为了隔离您的 bugfix,您在 Git 仓库窗口中右键点击 main,选择“New Local Branch From”,并将其命名为 fix/auth-race-1,与您的 DevOps 工单关联。您立即切换到了新分支,2026 版的 Git 状态栏显示了您的分支和同步状态,所以您绝不会迷失方向。

1

您用一个 async lock 更新了 AuthService.cs,以修复竞态条件。

产品经理在 Slack 上发来的消息打断了您的工作:他们需要您为一个 demo 评审一个功能分支。是时候暂停工作,但又不能丢失进度了。

上午 9:30:暂存更改以处理多项任务

您正在修复过程中,有未保存的更改,还没准备好提交。在 Git Changes 窗口 (View → Git Changes)中,您选中修改过的文件,点击“Stash All”,并添加备注:“WIP:demo 前的身份验证修复”。Visual Studio 会将所有内容暂存起来,让您的目录保持干净。

2

由于优化了解决方案加载和索引功能,现在 Visual Studio 中的分支切换速度快了很多。您可以完善 demo 功能并推送到远程,同时您的 bugfix 也能安全地暂存起来。

demo 功能审查完成后,您就可以回到 bugfix 工作中,在提交前对其进行完善了。

上午 10:15:review 暂存的代码

您切换回 fix/auth-race-1 分支,Visual Studio 的快速分支切换功能让您能够继续高效工作。要恢复您的工作,可前往 “Git Changes” 窗口,点击 “Stash” 选项卡,右键单击并选择 “Pop Stash”。您的更改就会无缝恢复。

提交之前,您希望能发现任何疏漏。在 Git Changes 窗口中,点击 Copilot Code Review 按钮。Copilot 会扫描您的修改,并在编辑器中留下一些评论。您只需一键即可应用这些建议。

3

为了更有把握,可以打开 Copilot Chat(View → Copilot Chat),输入“#changes 检查安全性”,然后会得到:“添加速率限制以实现暴力破解防护。”您对代码进行调整,提前发现更多问题,这会让您最终的 PR 更加简洁。

代码打磨完毕后,您就可以提交更改了。

上午 10:45:是时候提交了

您的代码很可靠,所以现在是提交的时候了。在“Git Changes”窗口中,点击“Generate Commit Message”按钮。该消息的格式符合您团队的标准(如何设置这一点可以在之前的博客文章中学习),与 DevOps 相关联,还能为您节省一分钟时间。点击一下即可推送您的更改,让提交历史保持清晰,对团队友好。

4

现在是时候和您的团队分享这个了。

上午 11:15:创建 PR 并进行在线审查

您的工作现在可以准备审核了!推送后,您会在“Git Changes ”窗口中看到一个标语,点击该链接创建拉取请求。(或者,您也可以前往“Git Repository”窗口,右键点击 fix/auth-race-1 → “Create Pull Request”。)在拉取请求创建界面中,点击“Add Reviewers”字段,从下拉菜单中选择您的负责人 Sarah 和另一位队友 Mike 作为审核者。由于只有一个提交,VS 会自动将 Copilot 的提交消息拉入 Azure DevOps PR 描述中。您也可以生成一个 PR 描述,以确保它符合团队的标准。点击“Create”,PR 就会进入审核阶段。

5

Sarah 可以在 Visual Studio 中轻松查看这个 PR,她能在 Git Repository 窗口中找到分配给她的 PR。

6

她打开 PR,直接在 Visual Studio 中添加评论。Markdown 会在差异比较中正确渲染,在差异中呈现得恰到好处,条理清晰且一目了然。无需打开浏览器!

7

进行内联回复、更新内容并推送新的更改。Visual Studio 会立即同步差异。评审过程感觉不那么杂乱,Sarah 和 Mike 表示批准。您将更改合并到主分支,并删除该分支以保持仓库整洁。

总结:流畅的 Git 流程

Visual Studio 的 Git 工具 —— 快速分支切换、可视化差异对比、Copilot 提交、AI 评审、内联评论 —— 能为您在日常工作中节省时间。分支操作、暂存和 PR 比以往任何时候都更加顺畅,让您可以专注于代码编写。提交前的 AI 评审能及早发现错误,为您的 PR 成功奠定基础。

试试看,并在下方评论中告诉我们您还想了解哪些其他的 Git 主题。

Happy coding!

原文链接:https://devblogs.microsoft.com/visualstudio/streamlining-your-git-workflow-with-visual-studio-2026/

Read more

Java接入阿里百炼大模型实战指南

Java接入阿里百炼大模型实战指南

创建AI后端项目 在上一期我们跑通了接口调用,我们就可以开始使用Java来接入阿里百炼大模型API了 环境准备 由于本项目使用的是Spring Boot 3和Spring AI开发框架,所以安装的JDK必须是17或21,不能选择其他版本 新建配置 在IDEA中新建SpringBoot项目,配置如下图: 整合依赖 开发AI项目时我们通常需要使用许多开发工具和接口,所以我们来整合HHHutool工具库和Kinfe4j接口文档 引入Hutool工具库 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当; Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。 通过Maven引入Huto

java官网下载jdk25的详细教程(下载、安装、配置环境变量)

java官网下载jdk25的详细教程(下载、安装、配置环境变量)

一、jdk(Java Development Kit)的下载与安装: 安装包下载:     链接:https://pan.baidu.com/s/1vOHtgborWy7uPgede5hstQ?pwd=nu6r 提取码: nu6r 官网下载:   www.oracle.com jdk8、jdk11、jdk17、jdk21、jdk25是LTS版本(长期支持版本),其他为普通版本(注:安装路径不要有中文、空格及其他特殊符号) 下载完成后安装,注意安装路径点击下一步 验证安装是否成功:   win+r 召唤运行窗口,输入cmd: 输入java+空格+version+回车: 二、jdk配置环境变量: 步骤一:找到java.exe的路径复制(D:\Javastudy\

为什么 Java 不让 Lambda 和匿名内部类修改外部变量?final 与等效 final 的真正意义

为什么 Java 不让 Lambda 和匿名内部类修改外部变量?final 与等效 final 的真正意义

文章目录 * 引言 * 一、什么是匿名内部类? * 二、final限制的历史与现状 * 1、Java 8之前的严格final要求 * 2、Java 8的等效final(effectively final) * 三、为什么不能修改外部局部变量 ? * 1、变量生命周期不一致 * 2、数据一致性保证 * 3、解决方案 * 四、底层实现机制 * 五、常见问题与误区 * 1、为什么实例变量没有这个限制? * 2、等效final的实际含义 引言 在Java编程中,尤其是在使用匿名内部类时,许多开发者都会遇到这样一个限制:从匿名内部类中访问的外部变量必须声明为final或是"等效final"。这个看似简单的语法规则背后,其实蕴含着Java语言设计的深层考量。本文将深入探讨这一限制的原因、实现机制以及在实际开发中的应用。 一、什么是匿名内部类? 在深入讨论之前,我们先简单回顾一下匿名内部类的概念。匿名内部类是没有显式名称的内部类,通常用于创建只使用一次的类实例。 button.addActionListener(

JAVA 泛型与通配符:从原理到实战应用

JAVA 泛型与通配符:从原理到实战应用

JAVA 泛型与通配符:从原理到实战应用 1.1 本章学习目标与重点 💡 掌握泛型的核心概念与设计初衷,理解泛型的编译期检查机制。 💡 熟练使用泛型类、泛型接口和泛型方法,解决数据类型安全问题。 💡 理解通配符(?)、上界通配符(? extends T)和下界通配符(? super T)的使用场景。 ⚠️ 本章重点是 泛型的擦除机制 和 通配符的灵活运用,这是提升代码通用性和安全性的关键。 1.2 泛型的核心概念与设计初衷 1.2.1 为什么需要泛型 在没有泛型的 JDK 5 之前,集合类只能存储 Object 类型的对象。获取元素时需要强制类型转换,这会带来两个严重问题: 1. 类型不安全:可以向集合中添加任意类型的对象,运行时可能抛出 ClassCastException。 2. 代码臃肿:频繁的强制类型转换会让代码可读性和维护性变差。 💡 泛型的出现就是为了解决这些问题,它的核心思想是

阿里云全品类 8 折券限时领,建站 / AI / 存储通用 立即领取