web-dev-qa-db-ja.com

Visual Studioでファイルを部分的にステージングする

ファイル全体ではなく、ファイル内のコードをステージングする方法はありますか?

これが可能かどうか疑問に思うだけです。

Visual Studio 2015、TFS 2015(Git)を使用します。

24
Valter

いいえ、Visual Studio 2015も2017もステージングハンク(部分ファイル)をサポートしていません。これらの部分的な変更をステージングするには、別のクライアントを使用する必要があります。

ステージングハンクはクライアント機能であり、それをサポートするクライアントはハンクのステージングに使用できます。コマンドラインまたはTowerやSourceTreeなどのサードパーティのクライアントが対応します。ステージングが完了すると、ステージングされた変更のコミットは、Visual Studioまたは変更をコミットできる他のクライアント(ほとんどすべてのgitクライアントになります)を使用して実行できます。

ハンクがステージングされると、Visual Studioはファイルを「Staged」および「Unstaged」として表示します。ステージングされたファイルには、ステージングしたハンクが含まれています。ステージングされていないファイルには、ステージングしていないハンクが含まれています。コミットすると、ステージングされたハンクがコミットされます。このサイクルは何度でも繰り返すことができます。

19
jessehouwing

@tomossiusは、git add interactiveコマンドを使用して、コマンドラインツールを使用してファイルを部分的にステージングする方法の例を尋ねました。もっとエレガントな方法があるかもしれませんが、これは私がそれを行う方法です。

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

このファイルが選択されていることを示す*を使用して、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のステージングエリアとステージングされていないエリアにファイルが表示されます。ステージングした変更はそのファイルにあり、ノーと言った変更はステージングされていない領域にあります。

13
craigdfrench

GitToolsには最高のGuiはありませんが、何もないよりはましです。詳細モード(ファイルリストの上にあるチェックボックス)では、選択した行をステージングまたはリセットできます。 https://marketplace.visualstudio.com/items?itemName=yysun.GitTools

6
morty

ファイルの部分的なステージングにソースツリーを使用できます。チームエクスプローラーを使用してVisual Studioからコミットすると、すべての変更がソースツリーに反映されます。

0
arpit rai