4

まったく同じことを行いますgit add .か?git add *

4

2 に答える 2

10

いいえ、それはしません。

*は glob パターンであり、で始まるファイルには一致しません。.

たとえば、これを現在のディレクトリとすると、追加する 2 つの新しいファイルがfooあり、.bar

$ ls -l

-rw-r--r-- 1 me users     0 Mar  7 19:31 foo
-rw-r--r-- 1 me users     0 Mar  7 19:31 .bar

私が実行するとgit add *

$ git add *

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   foo
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   .bar

代わりに実行するとgit add .

$ git add .

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   .bar
#   new file:   foo
#

BTW を使用すると、現在の特定のディレクトリの下にあるすべてのファイルのみを追加する場合、誤った結果git add * .*が生成されます。

この場合を考えてみましょう。6 つの新しいファイルがあります。

foo
.bar
mydir/abc
mydir/.def
mydir2/newfile1
mydir2/newfile2

私が入ってgitmydirを実行するとgit add .、次のファイルのみが追加されます。

mydir/abc
mydir/.def

代わりにコマンドを実行すると、 glob パターンも一致するため、1 つ上のディレクトリ レベルに存在するすべての変更に加えてgit add * .*、git がファイルを追加します。つまり、次のファイルが追加されます。mydir.*../

foo
.bar
mydir/abc
mydir/.def
mydir2/newfile1
mydir2/newfile2
于 2013-03-08T03:30:13.687 に答える
2

多くの場合、それらは同じになりますが、常にそうとは限りません。2 番目のケースでは、*通常のグロビング ルールを使用してシェルによって展開されるため、現在のディレクトリ内の a で始まるファイルは.追加されません。

于 2013-03-08T03:30:22.387 に答える