結論
両者の違いは下記のとおりです。
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 .
ではカレントディレクトリとそのサブディレクトリのファイルのみが対象となっていることがわかります。
参考
- とうとう Git 2.0 が現実のものに。便利な機能満載
-
Difference between “git add -A” and “git add .”
- Charles さんが 旧バージョンについて、DeveloperさんがGit2.0以降の動作について説明している