git add -u と git add -A と git add . の違い
Modified: | Tags: Git
Gitにおいて、git add
コマンドは指定したファイルをインデックスに登録してコミット対象にする。ここでは、git add -u
とgit add -A
とgit add .
の違いを説明する。
目次
git add
の基本的な使い方
git add
は、指定したファイルをインデックスに登録してコミット対象にするコマンド。
$ git add <file>
# 例
$ git add text.txt
<file>
には、*
を使ったワイルドカードによる指定もできる。
$ git add *.py # カレントディレクトリのすべての.pyファイルをadd
git add -u
とgit add -A
とgit add .
の違い
git add
にオプションを付けることで、複数のファイルをまとめて登録できる。
git add -u
(git add --update
)
- バージョン管理されていて、変更があったすべてのファイルが
add
される- 変更されたファイル、削除されたファイルが
add
される
- 変更されたファイル、削除されたファイルが
- バージョン管理されていないファイルは
add
されない- 新しく作られたファイルは
add
されない
- 新しく作られたファイルは
git add -A
(git add --all
)
- 変更があったすべてのファイルが
add
される- 変更されたファイル、削除されたファイル、新しく作られたファイル、すべてが
add
される
- 変更されたファイル、削除されたファイル、新しく作られたファイル、すべてが
git add .
- カレントディレクトリ以下の、変更があったすべてのファイルが
add
される- カレントディレクトリ以下の、変更されたファイル、削除されたファイル、新しく作られたファイル、すべてが
add
される - 注意: Git 1.xでは削除されたファイルは
add
されない
- カレントディレクトリ以下の、変更されたファイル、削除されたファイル、新しく作られたファイル、すべてが
以下のリンクの表が分かりやすかった。
New Files | Modified Files | Deleted Files | |
---|---|---|---|
git add -u |
× | ○ | ○ |
git add -A |
○ | ○ | ○ |
git add . |
○ | ○ | ○(Git 2.0以降) |
注意点
上の表では表現されていないが、厳密にはgit add -A
とgit add .
は動作に違いがある。
git add -u
とgit add -A
はリポジトリ内のどこで実行してもリポジトリ全体を処理するが、git add .
はカレントディレクトリ以下のみを処理する。
例えば、リポジトリ内にdir1
とdir2
のディレクトリがある場合。
repository_dir
├── dir1
└── dir2
dir1
でgit add .
を実行すると、dir2
の変更はadd
されない。
一方、git add -A
はどこで実行してもリポジトリ内のすべての変更がadd
される。