有没有办法只在文件而不是整个文件中放置代码片段?
只是想知道这是否可能。
使用Visual Studio 2015,TFS 2015(Git)。
答案 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提交,所有更改将反映在源树中。