git add. vs git commit -a

Odpowiedzi:

139

git commit -aoznacza prawie [*] to samo co git add -u && git commit.

To nie to samo, co git add .dodanie nieśledzonych plików, które nie są ignorowane, git add -utylko etapy zmian (w tym usunięcia) do już śledzonych plików.

[*] Istnieje subtelna różnica, jeśli nie jesteś w katalogu głównym repozytorium. git add -uObjazdy aktualizacje plików w bieżącym katalogu i poniżej, jest to równoważne git add -u .podczas git commit -aetapów i zobowiązuje zmian wszystkich monitorowanych plików.

CB Bailey
źródło
3
Zachowanie w [*] zmieni się w git 2.0 dla spójności.
user1284631
2
W jakim kierunku? tj. czy zatwierdzenie -a stanie się podobne do add -u, czy add -u stanie się podobne do zatwierdzenia -a?
Miles Rout
5
@MilesRout: git add -ustanie się jak git commit -a; będziesz musiał wyraźnie powiedzieć, git add -u .czy to masz na myśli.
CB Bailey,
To jest absolutnie to samo, ponieważ Git v 2.0 git add .zachowuje się w inny sposób.
Nick Volynkin
13

git commit -aautomatycznie wywołuje git addwszystkie znane mu pliki. Możesz użyć, git addaby wybrać pliki do zatwierdzenia. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją: tutaj

alternatywny
źródło
11
wszystkie pliki, o których wie, są dla mnie bardzo niejasne, zwłaszcza, że ​​podobno NIE zostały dodane
Nikana Reklawyks
1
@alternative, Ta odpowiedź może być lepsza, jeśli dodasz wyjaśnienie dotyczące „wszystkich plików, o których wie” .....
Pacerier,
2
@Pacerier odpowiednikgit add -u
alternatywa
2
@ Z.Khullah, więc „wszystko (...)” oznacza „śledzone pliki”?
TheFrost
1
@TheFrost dokładnie!
Z. Khullah,
1

Używając przełącznika git commit -a z poleceniem commit, aby automatycznie „dodawać” zmiany ze wszystkich znanych plików (tj. Wszystkich plików, które są już wymienione w indeksie)

Dilip
źródło