1. ホーム
  2. git

git add .` と `git add -u` はどう違うのですか?

2023-11-09 11:37:12

質問

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

  • とは何が違うのでしょうか? git add .git add -u ?

どのように解決するのですか?

git のゴチャゴチャの一つです。 ここに書かれている (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 2013 年 4 月、次期 git2.0 のため。 ).

私の回答を次のように修正しました。 git add -u . の代わりに git add -u .:

git add -u ウィル ツリー全体を操作する との一貫性を保つために、Git 2.0では git commit -a との一貫性を保つためです。

とする仕組みがなくなるので、" git add -u "のような振る舞いをします。 git add -u . というのは に慣れている人は、" git add -u " (pathspec なし) が現在のサブディレクトリ内のパスのみインデックスを更新するのに慣れている人は、明示的に " と言うように指を訓練し始めることが重要です。 git add -u . と明示的に言うように指を訓練し始めることです。

で述べたように、" e "です。