git add コマンド

ファイルの内容をインデックス(ステージングエリア)に追加し、次のコミットに備えます。

概要

git add は、作業ディレクトリ内のファイルの現在の内容で Git インデックス(ステージングエリア)を更新します。変更されたファイルに次のコミットに含めるよう印をつけます。このコマンドは Git ワークフローにとって不可欠であり、どの変更をコミットするか選択的に選ぶことができます。

オプション

-A, --all

追跡対象および未追跡のすべてのファイルの変更を追加します。

$ git add -A

-u, --update

すでに追跡対象となっているファイルについてのみインデックスを更新します。

$ git add -u

-p, --patch

インデックスと作業ツリーの間のパッチの塊(ハンク)を対話的に選択し、それらをインデックスに追加します。

$ git add -p
diff --git a/file.txt b/file.txt
index 1234567..abcdefg 100644
--- a/file.txt
+++ b/file.txt
@@ -1,4 +1,5 @@
 Line 1
 Line 2
+New line added
 Line 3
 Line 4
Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]?

-i, --interactive

変更された内容を対話的に追加します。

$ git add -i
           staged     unstaged path
  1:    unchanged        +2/-0 file1.txt
  2:    unchanged        +1/-1 file2.txt

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

-n, --dry-run

実際にファイルを追加せず、何が起こるかを表示するだけです。

$ git add -n *.txt
add 'document.txt'
add 'notes.txt'

-f, --force

通常は無視されるファイルの追加を許可します。

$ git add -f build/generated.js

-v, --verbose

詳細な情報を表示します。

$ git add -v *.js
add 'app.js'
add 'utils.js'

使用例

特定のファイルを追加する

$ git add file1.txt file2.txt

ディレクトリ内のすべてのファイルを追加する

$ git add src/

特定の拡張子を持つすべてのファイルを追加する

$ git add *.js

作業ディレクトリ内のすべての変更を追加する

$ git add .

ヒント:

正確な制御のためにパッチモードを使用する

-p(パッチ)オプションを使用すると、ファイルの一部を確認して選択的にステージングできます。これは、ファイルに複数の変更を加えたが、それらを別々にコミットしたい場合に便利です。

追加されるものを確認する

コミットする前に、git status を使用してどの変更がステージングされているかを確認しましょう。これにより、意図しない変更を誤ってコミットするのを防ぐことができます。

リセットでステージングを取り消す

誤ってファイルをステージングした場合は、git reset HEAD <file> でステージングを解除できます。

複雑な変更には対話モードを使用する

多くの変更ファイルがあるリポジトリでは、-i(対話)モードを使用すると、メニュー駆動のインターフェースで選択的に変更をステージングできます。

よくある質問

Q1. git add .git add -A の違いは何ですか?

A. git add . は現在のディレクトリとそのサブディレクトリのすべての変更を追加しますが、git add -A は現在のディレクトリに関係なく、作業ツリー全体の変更を追加します。

Q2. 未追跡のファイルではなく、変更されたファイルと削除されたファイルのみを追加するにはどうすればよいですか?

A. git add -u または git add --update を使用します。

Q3. 追加しようとしている変更を確認するにはどうすればよいですか?

A. git add -n(ドライラン)を使用して実際に追加せずに何が追加されるかを確認するか、git diff を使用して変更の詳細を確認します。

Q4. ファイルを追加した後、再び変更した場合はどうなりますか?

A. git add を実行した時点で存在していた変更のみがステージングされます。新しい変更は別の git add コマンドで追加する必要があります。

参考文献

https://git-scm.com/docs/git-add

改訂履歴