1. ホーム
  2. git

[解決済み] git add -A」と「git add .」の違い。

2022-03-13 07:39:27

質問

コマンド git add [--all|-A] と同じに見える。 git add . . これは正しいのでしょうか?もしそうでなければ、どのように違うのでしょうか?

解決方法は?

この回答は、以下の場合にのみ適用されます。 Git バージョン 1.x . Git バージョン 2.x については、他の回答を参照してください。


概要を説明します。

  • git add -A ステージ すべての変更

  • git add . は、新しいファイルや修正をステージします。 削除なし (カレントディレクトリとそのサブディレクトリに対して)。

  • git add -u ステージの変更と削除を行います。 新規ファイルなし


詳細

git add -A は、次のものと同等です。 git add .; git add -u .

について重要な点は git add . は、作業ツリーを見て、それらのパスが変更されているか、新しいもので、無視できないものであれば、ステージされた変更に追加するというものです。

git add -u はすべての すでに を追跡し、それらのファイルが異なっている場合、あるいは削除されている場合に、それらのファイルへの変更をステージングします。これは新しいファイルを追加するのではなく、すでに追跡されているファイルへの変更を段階的に行うだけです。

git add -A は、この2つを行うための便利なショートカットです。

このようなもので違いを試すことができます(ただし、Git バージョン 2.x では git add . git status 意志 が違う)。

git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial

echo OK >> change-me
rm delete-me
echo Add me > add-me

git status
# Changed but not updated:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git add .
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
# Changed but not updated:
#   deleted:    delete-me

git reset

git add -u
git status

# Changes to be committed:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git reset

git add -A
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
#   deleted:    delete-me