- 記事一覧 >
- ブログ記事
git add -A、git add . の違いとその他 git add まとめ
(更新) (公開)
はじめに
git add コマンドですが、git add -A
、 git add .
の違いが気になり、いろいろ調べていたところ、以下の stackoverflow の表を見つけました。
日本語にしただけで、ほぼそのまま転記になりますが、その他の git add コマンドも含め、具体的にどうなるのか調査してみました。
コマンド | 新規作成 | 更新 | 削除 | ステージング対象 |
---|---|---|---|---|
git add -A | ✔ | ✔ | ✔ | 新規作成・更新・削除 全て |
git add . | ✔ | ✔ | ✔ | カレントフォルダ内の新規作成・更新・削除 全て |
git add --ignore-removal . | ✔ | ✔ | ❌ | 新規作成・更新 |
git add -u | ❌ | ✔ | ✔ | 更新・削除のみ |
※Git Vertion 1.xの表もありますが、今回、Git Vertion 2.x のみの話とします。
git add -A
は、 git add --all
と同じ意味になります。git add -u
は、 git add --update
と同じ意味になります。git add
は、git stage
と同じ意味になります。
検証環境は、git version 2.25.1
です。
シェルは、bashで
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
です。
まとめ
検証結果の前にいきなりまとめを先出ししますと、
コマンド | 新規作成 | 更新 | 削除 | ステージング範囲 | ステージング対象 |
---|---|---|---|---|---|
git add -A | ✔ | ✔ | ✔ | リポジトリ全て | 新規作成・更新・削除 |
git add . | ✔ | ✔ | ✔ | カレントフォルダ内 | 新規作成・更新・削除 |
git add : | ✔ | ✔ | ✔ | カレントフォルダ内 | 新規作成・更新・削除 |
git add :/ | ✔ | ✔ | ✔ | リポジトリ全て | 新規作成・更新・削除 |
git add ":(top)" | ✔ | ✔ | ✔ | リポジトリ全て | 新規作成・更新・削除 |
git add --ignore-removal | ❌ | ❌ | ❌ | - | エラー(ドットが必要) |
git add --ignore-removal . | ✔ | ✔ | ❌ | カレントフォルダ内 | 新規作成・更新 |
git add -u | ❌ | ✔ | ✔ | リポジトリ全て | 更新・削除 |
git add -u . | ❌ | ✔ | ✔ | カレントフォルダ内 | 更新・削除 |
となりました。
【コロン (:)について】
コロン (:)ですが、
pathspec
という仕様で、:の後に書く内容によって、様々な意味を持たせることができるものです。今回は、リポジトリトップを表す「:/」「:(top)」と たまたまやってみたら「.」と同じ意味になった「:」(コロンのみ)で検証しました。
検証対象
リポジトリは、以下のような構造を前提とします。
リポジトリトップで実行の結果
$ git add -A
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: dir1/file2.txt
deleted: dir2/file3.txt
new file: file4.txt
git add -A の結果は、
modified: dir1/file2.txt
deleted: dir2/file3.txt
new file: file4.txt
となりました。
以下、その他のコマンドの結果のまとめです。
コマンド | ステージング結果 |
---|---|
git add -A | modified: dir1/file2.txt deleted: dir2/file3.txt new file: file4.txt |
git add . | modified: dir1/file2.txt deleted: dir2/file3.txt new file: file4.txt |
git add : | modified: dir1/file2.txt deleted: dir2/file3.txt new file: file4.txt |
git add :/ | modified: dir1/file2.txt deleted: dir2/file3.txt new file: file4.txt |
git add ":(top)" | modified: dir1/file2.txt deleted: dir2/file3.txt new file: file4.txt |
git add --ignore-removal | エラー:Nothing specified, nothing added. Maybe you wanted to say 'git add .'? |
git add --ignore-removal . | modified: dir1/file2.txt new file: file4.txt |
git add -u | modified: dir1/file2.txt deleted: dir2/file3.txt |
git add -u . | modified: dir1/file2.txt deleted: dir2/file3.txt |
ディレクトリ内で実行の結果
dir1 ディレクトリに移動した後の実行結果です。
$ cd dir1
$ git add -A
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: file2.txt
deleted: ../dir2/file3.txt
new file: ../file4.txt
git add -A の結果は、
modified: file2.txt
deleted: ../dir2/file3.txt
new file: ../file4.txt
となりました。
以下、その他のコマンドの結果のまとめです。
コマンド | ステージング結果 |
---|---|
git add -A | modified: file2.txt deleted: ../dir2/file3.txt new file: ../file4.txt |
git add . | modified: file2.txt |
git add : | modified: file2.txt |
git add :/ | modified: file2.txt deleted: ../dir2/file3.txt new file: ../file4.txt |
git add ":(top)" | modified: file2.txt deleted: ../dir2/file3.txt new file: ../file4.txt |
git add --ignore-removal | エラー:Nothing specified, nothing added. Maybe you wanted to say 'git add .'? |
git add --ignore-removal . | modified: file2.txt |
git add -u | modified: file2.txt deleted: ../dir2/file3.txt |
git add -u . | modified: file2.txt |
コメント投稿機能です。以下のように投稿されます。
個人情報に関わることは自己紹介であっても絶対に書き込まないでください。
その他、宣伝、誹謗中傷等、当方が不適切と判断した書き込みは、理由の如何を問わず、投稿者に断りなく削除します。
書き込み内容について、一切の責任を負いません。
このコメント機能は、予告無く廃止する可能性があります。ご了承ください。
コメントの削除をご依頼の場合はTwitterのDM等でご連絡ください。
その他、宣伝、誹謗中傷等、当方が不適切と判断した書き込みは、理由の如何を問わず、投稿者に断りなく削除します。
書き込み内容について、一切の責任を負いません。
このコメント機能は、予告無く廃止する可能性があります。ご了承ください。
コメントの削除をご依頼の場合はTwitterのDM等でご連絡ください。
個人情報に繋がる名前は入力しないでください。
loading...
よく読まれている記事