Różnica między "git add-A" i " git add."
Polecenie git add [--all|-A]
wydaje się być identyczne z git add .
. Czy to prawda? Jeśli nie, to czym się różnią?
9 answers
Ta odpowiedź dotyczy tylko Git w wersji 1.x . Dla Git w wersji 2.x, zobacz inne odpowiedzi.
Podsumowanie:
git add -A
etapy wszystkie zmianygit add .
etapuje nowe pliki i modyfikacje, BEZ USUWANIAgit add -u
etapy modyfikacji i usunięcia, bez nowych plików
Szczegóły:
git add -A
jest równoważne do git add .; git add -u
.
Ważnym punktem git add .
jest to, że przegląda działające drzewo i dodaje wszystkie te ścieżki do zmian etapowych, jeśli są zmienione lub są nowe i nie są ignorowane, nie wystawia żadnych akcji 'rm'.
git add -u
sprawdza wszystkie już śledzone pliki i dokonuje zmian w tych plikach, jeśli są inne lub jeśli zostały usunięte. Nie dodaje żadnych nowych plików, tylko wprowadza zmiany do już śledzonych plików.
git add -A
jest przydatny skrót do robienia obu tych rzeczy.
Możesz przetestować różnice za pomocą czegoś takiego (zauważ, że dla Git w wersji 2.x twoje wyjście dla git add .
git status
Czy będzie inny):
git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial
echo OK >> change-me
rm delete-me
echo Add me > add-me
git status
# Changed but not updated:
# modified: change-me
# deleted: delete-me
# Untracked files:
# add-me
git add .
git status
# Changes to be committed:
# new file: add-me
# modified: change-me
# Changed but not updated:
# deleted: delete-me
git reset
git add -u
git status
# Changes to be committed:
# modified: change-me
# deleted: delete-me
# Untracked files:
# add-me
git reset
git add -A
git status
# Changes to be committed:
# new file: add-me
# modified: change-me
# deleted: delete-me
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-30 16:04:23
Oto tabela do szybkiego zrozumienia:
Git Wersja 1.x :
Git Wersja 2.x :
Długie flagi:
-
git add -A
jest równoważnegit add --all
-
git add -u
jest równoważnegit add --update
Czytaj dalej:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:36
Z Git 2.0, git add -A
jest domyślnie: git add .
równa się git add -A .
.
git add <path>
jest tym samym co"git add -A <path>
" Teraz, tak że "git add dir/
" zauważy ścieżki usunięte z katalogu i Nagraj usunięcie.
W starszych wersjach Git, "git add <path>
" używane do ignorowania usuwania.Możesz powiedzieć "
git add --ignore-removal <path>
" do dodaj tylko dodane lub zmodyfikowane ścieżki w<path>
, jeśli naprawdę chcesz.
git add
jest jak git add :/
(dodaj wszystko od góry Git repo folder ).
Zauważ, że git 2.7 (Nov. 2015) pozwoli Ci dodać folder o nazwie ":
"!
Zobacz commit 29abb33 (25 października 2015) by Junio C Hamano (gitster
).
Zauważ, że uruchamianie git 2.0 (Q1 lub Q2 2014) , kiedy mówimy o git add .
(bieżąca ścieżka w drzewie roboczym), musisz użyć '.
' w innych poleceniach git add
.
To znaczy:
"
git add -A .
" jest odpowiednikiem "git add .; git add -u .
"
(zwróć uwagę na dodatkowe ".
" dla git add -A
i git add -u
)
Ponieważ git add -A
lub git add -u
operowałyby (uruchamiając git 2.0 tylko) na całym drzewie roboczym, a nie tylko na bieżącej ścieżce.
Te polecenia będą działać na całym drzewie w Git 2.0 dla spójności z"
git commit -a
" i innymi poleceniami. Ponieważ nie będzie mechanizmu, aby"git add -u
"zachowywał się tak, jakby"git add -u .
", jest to ważne dla tych, którzy są przyzwyczajeni do "{20]}" (bez pathspec) aktualizowanie indeksu tylko dla ścieżek w bieżącym podkatalogu, aby zacząć ćwiczyć swoje palce, aby wyraźnie powiedzieć "git add -u .
", gdy mają to na myśli przed wydaniem Git 2.0.Ostrzeżenie jest wydawane, gdy te polecenia są uruchamiane bez pathspec i gdy masz lokalne zmiany poza bieżącym katalogiem, ponieważ zachowanie w Git 2.0 będzie inne z dzisiejszej wersji w takiej sytuacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:45
Więc z instrukcji Karola powyżej, po przetestowaniu moje proponowane zrozumienie będzie następujące:
# For the next commit
$ git add . # add to index only files created/modified and not those deleted
$ git add -u # add to index only files deleted/modified and not those created
$ git add -A # do both operation at once, add to index all files
Ten link może być również pomocny w zrozumieniu, w jakiej sytuacji można zastosować te polecenia: Usuwanie usuniętych plików z katalogu roboczego Git .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-11 05:54:30
Spóźniony na imprezę, ale to pytanie również zasługuje na szybszą odpowiedź.
git add -A
Robi oba poniżej (to samo co git add --all )
git add .
Stages new + modified files
git add -u
Stages modified + deleted files
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-23 11:48:01
Things changed with Git 2.0:
-
-A
jest teraz domyślnym - stare zachowanie jest teraz dostępne z
--ignore-removal
-
git add -u
igit add -A
w podkatalogu bez ścieżek w wierszu poleceń działają na całym drzewie
Więc dla git 2 odpowiedź brzmi:
-
git add .
igit add -A .
Dodaj nowe / zmodyfikowane / usunięte pliki w bieżącym katalogu -
git add --ignore-removal .
dodaje nowe / zmodyfikowane pliki w bieżącym katalogu -
git add -u .
dodaje zmodyfikowane/usunięte pliki w bieżącym katalogu - bez kropki, dodaj wszystkie pliki w projekcie niezależnie od bieżącego katalogu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-13 15:29:52
W końcu to Rozumiem, dzięki wam wszystkim. Mam nadzieję, że to może dodać więcej jasności.
!The syntax is
git add <limiters> <pathspec>
! Aka
git add (nil/-u/-A) (nil/./pathspec)
Ograniczniki mogą być -u lub-A lub nil.
Pathspec może być ścieżką pliku lub kropką,'.'aby wskazać bieżący katalog.
Ważna wiedza o tym, jak git 'dodaje'.
- niewidoczne pliki, te poprzedzone kropką, (dotfiles) nigdy nie są automatycznie rozpoznawane przez Git. Nigdy nie są nawet wymienione jako "nie śledzone".
- puste foldery nigdy nie są dodany przez git. Nigdy nie są nawet wymienione jako "nie śledzone". (Obejściem jest dodanie pustego pliku, prawdopodobnie niewidocznego, do śledzonych plików.)
- Git status nie wyświetli informacji o podfolderze, np. nie śledzonych plikach, chyba że co najmniej jeden plik w tym podfolderze jest śledzony. Przed upływem tego czasu, git uznaje cały folder za "pusty". Jest pusty ze śledzonych przedmiotów.
- określanie pliku='.'(kropka), czyli bieżący katalog nie jest rekurencyjny, chyba że-A jest również określone. Dot odnosi się ściśle do bieżącego katalogu - pomija ścieżki znalezione powyżej i poniżej.
Teraz, biorąc pod uwagę tę wiedzę, możemy zastosować powyższe odpowiedzi.
Ograniczniki są następujące.- - u = --update = subset to tracked files => Add = No; Change = Yes; Delete= Yes. = > iff element jest śledzony.
- - a = --all ( no such-a, which gives syntax error) = superset wszystkich nie śledzonych / śledzonych plików, chyba że w Git jeśli element zostanie rozpoznany, git add-A znajdzie go i doda.
Ścieżka jest następująca.
- W Git
- jednakże, w wersji 2.0, operacja może być ograniczona do bieżącej ścieżki: wystarczy dodać wyraźny przyrostek kropki (który jest również ważny w Git
git add -A .
git add -u .
Podsumowując, moja polityka jest ;
- 1.Upewnij się, że wszystkie kawałki / pliki, które mają być dodane, są rozliczane w statusie git.
- 1A. jeśli brakuje jakichkolwiek elementów, z powodu niewidocznych plików/folderów, dodaj je osobno.
- 2.Miej dobre gitignore tak, że normalnie tylko interesujące pliki są nie śledzone i / lub nierozpoznane.
- 3.Z najwyższego poziomu repo, "git add-A", aby dodać wszystkie pozycje. Działa to we wszystkich wersjach git.
- 4.W razie potrzeby usuń wszystkie pożądane elementy z indeksu.
- 6.Jeśli jest duży błąd, wykonaj 'Git reset', aby wyczyścić indeks całkowicie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-21 14:45:57
git add .
equals git add -A .
dodaje pliki do indeksu tylko z folderów current i children.
git add -A
dodaje pliki do indeksu ze wszystkich folderów w drzewie roboczym.
P. S.: informacje dotyczą Git 2.0.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-03 19:12:18
W Git 2.x :
Jeśli znajdujesz się bezpośrednio w katalogu roboczym , to
git add -A
igit add .
działają bez różnicy.Jeśli znajdujesz się w podkatalogu working directory,
git add -A
doda wszystkie pliki z całego katalogu roboczego , agit add .
doda pliki z twojego bieżącego katalogu .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-16 22:32:31