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される。