2012-06-10 13 views
13

git animals miał tę serię poleceń:Jaka jest różnica między git add * i git add., Jeśli w ogóle?

git init 
git add * 
git commit -a -m ‘initial commit and release!’ 

Co git add * zrobić porównaniu git add . (co normalnie robią) są takie same?

+0

* zwykle oznacza "Dopasuj wszystko" i. oznacza "ten katalog bieżący", który domyślnie jest wykonywany rekurencyjnie. – TylerH4

+0

@ TylerH4: Ale jeśli rozszerzenie '*' zawiera katalogi, zostaną one dodane rekursywnie przez git w każdym przypadku. –

Odpowiedz

17

git add * doda wszystkie ścieżki, które są wynikiem powłoki ekspansji * natomiast git add . powie git dodać aktualny katalog.

git add * nie doda ścieżek rozpoczynających się od ., ponieważ rozszerzenie powłoki * uważa je za ścieżki "ukryte".

git add * również powiedzie się, jeśli każdy rozbudowany ścieżka jest aktualnie ignorowane przez git bo git uważa to błąd, jeśli jawnie określić ignorowane drogę bez przejazdu banderę -f (siła), aby pokazać, że naprawdę chcesz dodać ignorowane ścieżkę .

Jeśli dostaniesz git, aby rozwinąć glob (git add '*'), doda on "ukryte" pliki i pominie ignorowane pliki. W tym przypadku działałoby to tak samo jak git add ..

+0

Czy * shell * oznacza tutaj aplikację linii poleceń lub system operacyjny? –

2

Domyślnie przekazanie katalogu do git add spowoduje rekursywne dodanie jego podkatalogów i plików.

Numer wieloznaczny * zostanie rozszerzony przez powłokę jako nazwy plików poniżej bieżącego katalogu.

I wiesz, w Unix . odnosi się tylko do bieżącego katalogu, więc te dwa polecenia są równoważne. Chociaż * jest przetwarzany przez powłokę i . jest przetwarzany przez git, robią to samo.

+3

Ponieważ '*' jest przetwarzane przez powłokę, nie bierze pod uwagę '.gitignore', natomiast' .' robi. – wisbucky

Powiązane problemy