git add -u と git add -A と git add . の違い

Posted: | Tags: Git

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 -u (git add --update)

  • バージョン管理されていて、変更があったすべてのファイルがaddされる
    • 変更されたファイル、削除されたファイルがaddされる
  • バージョン管理されていないファイルはaddされない
    • 新しく作られたファイルはaddされない

git add -A (git add --all)

  • 変更があったすべてのファイルがaddされる
    • 変更されたファイル、削除されたファイル、新しく作られたファイル、すべてがaddされる

git add .

  • カレントディレクトリ以下の、変更があったすべてのファイルがaddされる
    • カレントディレクトリ以下の、変更されたファイル、削除されたファイル、新しく作られたファイル、すべてがaddされる
    • git ver.1.xまでは、削除されたファイルはaddされなかった

以下のリンクの表が分かりやすかった。

New Files Modified Files Deleted Files
git add -u ×
git add -A
git add .

注意点

上の表では表現されていないが、厳密にはgit add -Agit add .は全く同じではない。

git add -ugit add -Aはレポジトリ内のどこで実行してもレポジトリ全体を処理するが、git add .はカレントディレクトリ以下のみを処理する。

例えば、レポジトリ内にdir1dir2のディレクトリがある場合。

repository_dir
├── dir1
└── dir2

dir1git add .を実行すると、dir2の変更はaddされない。

関連カテゴリー

関連記事