使用Visual Studio部分暂存文件

时间:2016-12-19 15:09:10

标签: git visual-studio-2015 tfs2015

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

只是想知道这是否可能。

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

4 个答案:

答案 0 :(得分:17)

不,Visual Studio 2015和2017都不支持暂存(部分文件)。您需要使用其他客户端来进行这些部分更改。

Staging hunks是一个客户端功能,任何支持它的clietn都可以用来表示一个大块头。命令行或Tower或SourceTree等第三方客户端都可以。一旦暂存,可以使用Visual Studio或任何其他可以提交更改的客户端(几乎每个git客户端都可以)完成提交阶段性更改。

一旦上传了一个hunk,Visual Studio会将该文件显示为“已暂存”,也将显示为“未暂存”。分阶段文件包含您上演的模块。未分级的文件包含您尚未上演的帅哥。当您提交暂存的大块时,将提交。您可以根据需要多次重复此循环。

答案 1 :(得分:10)

@tomossius通过使用git add interactive命令询问了如何使用命令行工具部分暂存文件的示例。可能有一种更优雅的方式,但这就是我的方式。

Git manual reference - Interactive Staging

尽管如此,我还是会经历一个简单的案例。

命令是

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>>

如果*表示选择了此文件,我们只需按Enter即可开始修补过程。

此时,您将被提示每个单独的块。

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中看到该文件。您暂存的更改将在该文件中,而您拒绝的更改将在未暂存区域中。

答案 2 :(得分:6)

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

答案 3 :(得分:0)

可以将源树用于文件的部分暂存。如果您使用团队资源管理器从Visual Studio提交,所有更改将反映在源树中。