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
改訂履歴
- 2025/05/05 初版