web-dev-qa-db-ja.com

`git add .`と` git add -u`の違いは何ですか?

私は両方が同じように機能すると仮定していました。どちらもすべてのファイルをインデックスに追加します。しかし、私は間違っているようです。

  • git add .git add -uの違いは何ですか?
68
TK.

これはgit gotchasの1つです ここで言及 (Git 2.0より前)。

git add .はそこにあるものだけを追加し、削除されたものは追跡しません。

git add .
git commit
git status
//hey! why didn't it commit my deletes?, Oh yeah, silly me
git add -u .
git commit --amend

git add -Aは両方のステップを処理します...


Git 2.0では、git add -Aはデフォルトです

git add <path>は "git add -A <path>"と同じであるため、 "git add dir/"はディレクトリから削除したパスに気付き、削除を記録します。
Gitの古いバージョンでは、「git add <path>」は削除を無視するために使用されていました。

git add --ignore-removal <path>」と発声すると、本当に必要に応じて<path>に追加または変更されたパスのみを追加できます。


警告( git1.8.3 April 2013、来たるgit2. )。
答えを修正して、git add -u .の代わりにgit add -uと言いました。

git add -uは、「git commit -a」およびその他のコマンドとの一貫性を保つために、Git 2.0のツリー全体で動作します
git add -u」を「git add -u .」として動作させるメカニズムはないため、「git add -u」(pathspecなし)に慣れている人にとっては重要です現在のサブディレクトリ内のパスのインデックスのみを更新して、Git 2.0が登場する前に「git add -u .」と明示的に言うように指のトレーニングを開始します。

e 」で述べたように

70
VonC

マニュアルが言うように:git add .は現在のディレクトリにすべてのファイルを追加し、git add -u .は、既に追跡されているもののみを追加します。

21

git add documentaiton

git add . 

現在のディレクトリからすべてのファイルを追加します

git add -u 

現在追跡されているファイルのみを更新します。

12
Derek Swingley