Git

git add -A と git add . の違い(Git 2.x)

More than 1 year has passed since last update.

結論

両者の違いは下記のとおりです。
git add -A : ツリー全体を対象とする
git add .   : カレントディレクトリ以下のツリーを対象とする

Git 1.x では対象に削除されたファイルを含むかが違いでしたが、Git 2.0からはその違いはありません。

検証

まずは作業用のフォルダを作り、gitを初期化します。

mkdir git-training
cd git-training
git init

次に動作を確認するための準備として、ファイルの作成と編集をします。(git add -A を使っていますが、準備なので今は気にしないでください。)

echo 'Change me.' > change-me.txt
echo 'Delete me.' > delete-me.txt
git add -A
git commit -m 'ファイルを追加'

ここからが実際に add する対象の操作となります。

echo 'New file.' > new-file.txt
mkdir dir
mkdir dir/subdir
echo 'File in dir.' > dir/file.txt
echo 'File in subdir.' > dir/subdir/file.txt
echo ' Changed.' >> change-me.txt
rm delete-me.txt
git status
git add -A
git reset
git add .
git reset

両者に違いがないことがわかります。

cd dir
git add -A
git reset
git add .
git reset

git add -A ではツリー全体が対象となっているのに対し、git add . ではカレントディレクトリとそのサブディレクトリのファイルのみが対象となっていることがわかります。

参考