当前位置: 首页 > 知识库问答 >
问题:

使用Visual Studio部分暂存文件

吴和硕
2023-03-14

有没有办法只在文件中暂存代码片段而不是整个文件?

只是想知道这是否可能。

使用Visual Studio 2015、TFS 2015(Git)。

共有3个答案

萧凡
2023-03-14

GitTools没有最好的Gui,但总比什么都没有好。在高级模式下(文件列表上方的复选框),您可以暂存或重置选定的行。https://marketplace.visualstudio.com/items?itemName=yysun.GitTools

余善
2023-03-14

@tomossius举了一个例子,说明如何使用git add交互式命令使用命令行工具部分暂存文件。可能有更优雅的方法,但我就是这样做的。

Git 手册参考 - 交互式暂存

尽管如此,我将介绍一个简单的案例。

命令将是

git add -i stagepartialfile.cs

然后,系统会提示您一个菜单

           staged     unstaged path
  1:    unchanged      +30/-30 stagepartialfile.cs

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now>

从这里你可以选择5或p作为补丁。

What now> 5
           staged     unstaged path
  1:    unchanged      +30/-30 stagepartialfile.cs
Patch update>>

Git会提示您选择要修补的文件。在这种情况下,我们输入1以选择我们指定的文件。

Patch update>> 1
           staged     unstaged path
* 1:    unchanged      +30/-30 stagepartialfile.cs
Patch update>>

使用 * 表示选择了此文件,我们只需按回车键即可开始修补过程

在这一点上,您将被提示阶段每个单独的块。

diff --git a/stagepartialfile.cs b/stagepartialfile.cs
index ea97bc6..d55218c 100644
--- a/stagepartialfile.cs
+++ b/stagepartialfile.cs
@@ -1,4 +1,5 @@
using System;
+using System.Configuration;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net;
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? 

按下?我们可以得到命令列表

y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help

从这里,您可以通过使用y或n或s分割成更小的块来选择要分段的块。

完成此操作后,您将在 Visual Studio 中的暂存区域和非暂存区域中看到该文件。您暂存的更改将位于该文件中,而您拒绝的更改将位于未暂存区域中。

司徒光霁
2023-03-14

这是Visual Studio 17.3附带的。

Visual Studio 2022 最近引入了暂存线和块!看:

线路分段(交互式分段)

行分段支持,即交互式分段是我们最流行的Git建议票之一。当您需要在不同的提交之间拆分更改时,行分段可能很有用。此预览包括我们仍在努力增强的几项Line登台功能。启用此早期版本的行分段支持的最简单方法是使用CTRLQ,键入“预览”并打开预览功能窗格。滚动到“Enable line staging support”(启用行暂存支持)并切换复选框。

注意:线路暂存仍然是预览功能

这个功能仍然是一个预览功能,这意味着我们正在努力在未来的版本中添加更多的支持。与此同时,我们依赖于您的反馈,即社区,来构建您需要的东西

一旦您打开行分段预览标志并重新启动Visual Studio,您就可以通过单击Git Changes窗口中的文件来开始分段您的更改。然后将鼠标悬停在您想要存放的代码部分上,并单击“存放更改”。

提示:使用行暂存与您首选的差异布局

内联和并排diff模式都支持行分段:在行视图中分段图像

这种早期版本的行暂存支持有许多已知的问题和限制。

不,Visual Studio 2015、2017、2019和2022 pre17.3都不支持暂存大块(部分文件)。您需要使用另一个客户端来暂存这些部分更改。

暂存大块是一个客户端功能,任何支持它的客户端都可以用来暂存大块。命令行或第三方客户端(如塔或源树)就可以了。暂存后,可以使用Visual Studio或任何其他可以提交更改的客户端(几乎是所有git客户端)提交暂存更改。

一旦一个大块被暂存,VisualStudio会将文件显示为“暂存”和“未暂存”。暂存文件包含您暂存的大块。未暂存文件包含尚未暂存的大块。当您提交时,将提交分段的大块。您可以根据需要重复此循环多次。

 类似资料:
  • 本文向大家介绍VisualStudio 使用Visual Leak Detector检查内存泄漏,包括了VisualStudio 使用Visual Leak Detector检查内存泄漏的使用技巧和注意事项,需要的朋友参考一下 那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测功能,我们可以使用第三方工具Visual Lea

  • VisualStudio (GitHub Extension for Visual Studio) 是 GitHub 的 Visual Studio 插件。 主要功能: 连接 GitHub 一键 clone 创建新库 发布本地库

  • Staging Area,暂存区 / 中间区。把对项目做的修改,先放到暂存区,然后再做提交。 用法 把对某个文件的所有修改添加到暂存区: git add <文件> 把在某个目录下做的所有修改添加到暂存区: git add <目录> 把做的所有修改还有新的文件添加到暂存区(不包含删除文件): git add . 把所有东西放到暂存区(修改,新文件,删除文件): git add -A 把做的所

  • 我有两台服务器,其中服务器A向服务器B发送文件。在服务器B上,我有一个接收给定类别文件的endpoint。这是我需要将文件发送到的endpoint的签名: 现在我在用RESTTemplateExchange创建这样的请求时遇到了麻烦。在服务器A上,我试图逐个发送文件(服务器B上的endpoint需要接受多部分数组,因为它也在其他地方使用)。这就是我所尝试的: 这几乎工作,唯一的问题是,在服务器B从

  • 我正在用Java生成一个PDDocument,代码如下... 然后保存并关闭文档,如下所示... 有没有一种方法可以关闭流并创建多个PDF,而不会出现抓取文件错误?

  • 问题内容: 我有一个奇怪的问题要问。我需要知道如何使用Java(任何文件类型)将给定的文件分成小块。然后,我可以将这些光盘放入CD,笔式驱动器中,然后带走。我用这种方式尝试过 但是正如大多数用户评论的那样,我正在尝试的事情无法通过这种方式实现。因此,我决定提出一个新问题,以获取正确的方法来破坏文件。 当我将文件分解成碎片(猜测是30个碎片)时,必须有一种方法可以将它们重新组合起来并重新创建原始文件