ファイルをインデックスに追加する(ステージング)
ステージングはコミットしたいファイルをインデックスに追加する操作です。 ステージングされたファイルがコミットの対象となります。
例として以下のような状況での操作を想定してみます。
ファイルA ~ ファイルE があり、 ファイルD ~ ファイルE はフォルダに入っています。ファイルB 以外は変更された状態です。VSCodeかSource Treeでの操作が簡単だと思います。
コマンドライン(GitBash)を使用する方法
GitBashでローカルリポジトリを開いた状態を想定して行います。
基本のコマンド
ステージングは add コマンドを使用して行います。
基本のコマンドとしては以下のコマンドで指定したファイルをステージングします。
git add [ファイル名]
ファイルA をステージングしてみましょう。git add ファイルA を実行します。
git status でファイルの状況を確認してみましょう。ファイルA が「Changes to be committed」の欄に表示されていることがわかります。
同様に ファイルD もステージングして確認してみます。
ステージングした ファイルA が「Changes to be committed」の欄に移動しましたね。
ファイルをまとめてステージング
ディレクトリを指定したり、ワイルドカード使うことでファイルをまとめてステージングすることもできます。
ファイル全て
-A オプションを追加すると全ての変更や新規追加されたファイルを追加します。
# ファイルすべて
git add -A
変更のあったファイル全て(新規追加除く)
-U オプションでは -A と異なり新規追加されたファイルは追加されません。
# 変更のあったファイルすべて
git add -u
カレントディレクトリ内のファイル全て
コマンドを実行した時のカレントディレクトリ以下の全ての変更や新規追加されたファイルを全てステージングします。
# カレントディレクトリ内のファイル全て
git add .
指定したディレクトリ以下のファイル全て
指定したフォルダ以下の全ての変更や新規追加されたファイルを全てステージングします。
# 指定したディレクトリ以下の全て
git add [ディレクトリのパス]
ワイルドカードを使ったファイル指定
ワイルドカード * を使って任意のディレクトリのファイルをステージングします。
# 指定したディレクトリ直下のフォルダのワイルドカードで指定されたファイル
git add [ディレクトリのパス]/*.txt
ファイルの一部をステージング
-p または -patch オプションを使用することでファイルの変更箇所を一部だけステージングすることができます。
git add -p
# または
git add --patch
# ファイルを指定する場合
git add -p [ファイルのパス]
# または
git add -patch [ファイルのパス]
コマンドを実行すると、変更箇所の塊(Hunk)毎に差分が表示され、そこの区間の処理を聞かれるので、処理を選択していきます。
アクション |
説明 |
|---|---|
y |
ハンクをステージングする |
n |
ハンクをステージングしない |
q |
対話形式でのステージングを終了する(Quit) |
a |
現在のハンクと残りすべてのハンクをステージングする |
d |
現在のハンクと残りのハンクをステージしない |
s |
現在のハンクを更に小さなハンクに分割する |
e |
現在のハンクの範囲を手動で編集する |
? |
ヘルプを表示する |
以下のような差分の ファイルC.md でためし1行目と7行目の変更のみをステージングしてみましょう。
まずは以下のコマンドで対話モードを始めます。
git add -p ファイルC.md
表示されたハンクを見てみると、変更した箇所同士が近いので1つのハンクとGitに認識されています。
s と入力してハンクを更に小さく分割してもらいましょう。
1行目と7行目だけステージングしたいので、ハンク(1/3)と(3/3)では y をハンク(2/3)では n を返していきます。
最後のハンクまで処理を行えばステージング完了です。全体を以下に示します。
VSCodeを使用する方法
ファイルにマウスカーソルを重ねると右側に出てくるアイコンの + をクリックするとステージングできます。
ファイルは Ctrl や Shift を押しながら複数選択してステージングすることも可能です。
「変更」にマウスカーソルを重ねて出てくる + をクリックすると全てのファイルをステージングできます。
指定した範囲のみステージングする
注釈
VSCodeの拡張機能「GitLens」の機能を使用します。
VSCodeのエディターでステージングしたいファイルを開きます。
変更された範囲(行)の行番号の右側にあるラインをクリックします。
その箇所の変更の差分が表示されるので + アイコンを押してその範囲をステージングします。
SourceTreeを使用する方法
ファイル名の右側の + をクリックするとそのファイルをステージングできます。
ファイルは Ctrl や Shift を押しながら複数選択して 選択をインデックスに追加 でまとめてステージングすることも可能です。
全てインデックスに追加 で全てのファイルをステージングできます。
指定した範囲のみステージングする
ファイルを選択して右側に差分を開きます。
差分画面でステージングしたい変更の行を選択します。
選択した行をステージへ移動 をクリックします。