From ab3a31e12c7b9470e91965e81519448be33f6e7f Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 19 Jun 2026 08:41:04 -0700 Subject: [PATCH] Using git agent for code review (new feature) (#15397) * Using git agent for code review (new feature) * Apply suggestion from @ghogen * Restore Git Changes section * Remove duplicated lines Removed redundant instructions for reviewing changes with Copilot. * Fix warning * Update docs/version-control/git-make-commit.md Co-authored-by: learn-build-service-prod-09[bot] <274431102+learn-build-service-prod-09[bot]@users.noreply.github.com> --------- Co-authored-by: learn-build-service-prod-09[bot] <274431102+learn-build-service-prod-09[bot]@users.noreply.github.com> --- docs/ide/copilot-specialized-agents.md | 22 +++++++++- docs/version-control/git-make-commit.md | 40 +++++++++++++----- .../git-agent-code-review-description.png | Bin 0 -> 11220 bytes .../git-agent-code-review-icebreaker.png | Bin 0 -> 13304 bytes 4 files changed, 51 insertions(+), 11 deletions(-) create mode 100644 docs/version-control/media/visualstudio/git-agent-code-review-description.png create mode 100644 docs/version-control/media/visualstudio/git-agent-code-review-icebreaker.png diff --git a/docs/ide/copilot-specialized-agents.md b/docs/ide/copilot-specialized-agents.md index 8e73226ee0a..ca8f3706957 100644 --- a/docs/ide/copilot-specialized-agents.md +++ b/docs/ide/copilot-specialized-agents.md @@ -8,7 +8,7 @@ ms.author: mikejo ms.subservice: ai-tools ms.collection: ce-skilling-ai-copilot -ms.custom: awp +ms.custom: awp, doc-kit-assisted ai-usage: ai-assisted ms.update-cycle: 180-days monikerRange: '>= vs-2022' @@ -52,6 +52,7 @@ Each built-in agent focuses on a specific developer workflow. These agents integ | Agent | Description | | ----- | ----------- | | **@debugger** | Goes beyond reading error messages. Uses your call stacks, variable state, and diagnostic tools to walk through error diagnosis systematically across your solution. | +| **@git** | Reviews your local uncommitted changes and surfaces feedback as inline comments in the editor and in the Git Changes experience. | | **@profiler** | Connects to Visual Studio's profiling infrastructure to identify bottlenecks and suggest targeted optimizations grounded in your codebase, not generic advice. | | **@test** | Generates unit tests tuned to your project's framework and patterns, not boilerplate that your CI rejects. | | **@modernize** | (.NET and C++ only) Handles framework and dependency upgrades with awareness of your actual project graph. Flags breaking changes, generates migration code, and follows your existing patterns. | @@ -65,6 +66,8 @@ Each built-in agent focuses on a specific developer workflow. These agents integ | ----- | ----------- | | **@profiler** | Connects to Visual Studio's profiling infrastructure to identify bottlenecks and suggest targeted optimizations grounded in your codebase, not generic advice. | +::: moniker-end + :::moniker-end :::moniker range="visualstudio" @@ -85,6 +88,23 @@ The @debugger agent helps you diagnose errors systematically by analyzing your d ::: moniker-end +:::moniker range="visualstudio" + +### Use the @git agent + +Use the @git agent to review local uncommitted changes without leaving Copilot Chat. + +**Example prompts**: + ++ `@git Review my changes` ++ `@git Explain this review comment and suggest a fix` + +:::image type="content" source="../version-control/media/visualstudio/git-agent-code-review-icebreaker.png" alt-text="Screenshot showing Copilot Chat with the Git agent and Review changes option highlighted."::: + +For the full local review workflow, see [Review local changes with Copilot Chat](../version-control/git-make-commit.md#review-local-changes-with-copilot-chat). + +::: moniker-end + ### Use the @profiler agent The @profiler agent connects to Visual Studio's profiling tools to help identify and fix performance issues. diff --git a/docs/version-control/git-make-commit.md b/docs/version-control/git-make-commit.md index 4359c01e4e1..e526d45e0f3 100644 --- a/docs/version-control/git-make-commit.md +++ b/docs/version-control/git-make-commit.md @@ -137,25 +137,29 @@ The **Git Changes** window also shows a list of all Copilot review comments, org ![Screenshot showing code review comments for each file in the Git Changes window.](./media/visualstudio/local-code-review-comment-list-cropped.png) -:::moniker-end +#### Review from the Git agent in Copilot Chat -:::moniker range="vs-2022" +In Copilot Chat, switch to the **Git** agent. You can select it from the agent picker or type `@git` in the chat input. -In the **Git Changes** window, select the **Review changes with Copilot** button, which looks like a comment icon with a sparkle. +![Screenshot showing the Git agent description card in Copilot Chat.](./media/visualstudio/git-agent-code-review-description.png) -After a few moments, a link showing the number of code review comments appears in the **Git Changes** window that you can select to view and navigate the comments. If no issues are detected, the message **Copilot did not comment on any files** appears. +Ask the agent to review your changes. You can use the suggested **Review changes** prompt or type your own. -![Screenshot showing Git Changes window with Review changes button.](./media/vs-2022/git-code-review-changes-button.png) +![Screenshot showing Copilot Chat with the Git agent and Review changes option highlighted.](./media/visualstudio/git-agent-code-review-icebreaker.png) -The code review feedback shows up as comments, which show brief summary of the potential problem, and you can decide to make a change, or dismiss the comment box by using the up arrow button on the top right of the comment box. +The agent analyzes your uncommitted changes by using GitHub Copilot code review. After the service returns a result, a link showing the number of code review comments appears in the **Git Changes** window. Select the link to view and navigate comments. If no issues are detected, the message **Copilot did not comment on any files** appears. -![Screenshot showing GitHub code review comment.](./media/vs-2022/git-code-review-comment.png) +The review feedback appears inline in the editor and in the **Git Changes** comment list. You can continue the conversation in chat to ask for explanations, discuss findings, and work through suggested edits. -To remove all comments, use the **X** in the Git Changes window to close the Copilot code review link. +![Screenshot showing an inline code review comment from the Git agent in the editor.](./media/visualstudio/git-agent-code-review-comment-2.png) -:::moniker-end +To remove all comments, use the **X** in the **Git Changes** window to close the Copilot code review link. -:::moniker range="visualstudio" +##### Navigate comments for Git agent reviews + +The **Git Changes** window also shows a list of all Copilot review comments, organized by file. You can double-click any comment in the list to navigate directly to that comment located inline with the corresponding code in the editor. + +![Screenshot showing code review comments for each file in the Git Changes window.](./media/visualstudio/local-code-review-comment-list-cropped.png) ### Apply suggestions from local code review @@ -171,6 +175,22 @@ You can also apply code suggestions from [pull request comments](git-create-pull :::moniker-end +:::moniker range="vs-2022" + +In the **Git Changes** window, click on the **Review changes with Copilot** button, which looks like a comment icon with a sparkle. + +After a few moments, a link showing the number of code review comments appears in the **Git Changes** window that you can click on to view and navigate the comments. If no issues are detected, the message **Copilot did not comment on any files** appears. + +![Screenshot showing Git Changes window with Review changes button.](./media/vs-2022/git-code-review-changes-button.png) + +The code review feedback shows up as comments, which show brief summary of the potential problem, and you can decide to make a change, or dismiss the comment box by using the up arrow button on the top right of the comment box. + +![Screenshot showing GitHub code review comment.](./media/vs-2022/git-code-review-comment.png) + +To remove all comments, use the **X** in the **Git Changes** window to close the Copilot code review link. + +:::moniker-end + ## Revert, reset, or amend a commit When you double-click a **Commit**, Visual Studio opens its details in a separate tool window. From here you can revert the commit, reset (undo) the commit, amend the commit message, or create a tag on the commit. When you select a changed file in the commit, Visual Studio opens the side-by-side **Diff** view of the commit and its parent. diff --git a/docs/version-control/media/visualstudio/git-agent-code-review-description.png b/docs/version-control/media/visualstudio/git-agent-code-review-description.png new file mode 100644 index 0000000000000000000000000000000000000000..c0de6a5022e572ccdae0f473d335509098146d5b GIT binary patch literal 11220 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 AdjJ3c literal 0 HcmV?d00001