Der Befehl git add [--all|-A]
scheint identisch zu sein git add .
. Ist das richtig? Wenn nicht, wie unterscheiden sie sich?
Unterschied zwischen „git add -A“ und „git add .“
cmcginty
CB Bailey
Diese Antwort gilt nur für Git-Version 1.x. Für Git-Version 2.x siehe andere Antworten.
Zusammenfassung:
-
git add -A
Stufen alle Änderungen -
git add .
stellt neue Dateien und Änderungen bereit, ohne Löschungen (auf das aktuelle Verzeichnis und seine Unterverzeichnisse). -
git add -u
Änderungen und Löschungen inszeniert, ohne neue Dateien
Detail:
git add -A
ist äquivalent zu git add .; git add -u
.
Der wichtige Punkt über git add .
ist, dass es sich den Arbeitsbaum ansieht und alle diese Pfade zu den inszenierten Änderungen hinzufügt, wenn sie entweder geändert wurden oder neu sind und nicht ignoriert werden, es inszeniert keine ‘rm’-Aktionen.
git add -u
schaut sich das ganze an bereits nachverfolgte Dateien und stellt die Änderungen an diesen Dateien bereit, wenn sie sich unterscheiden oder wenn sie entfernt wurden. Es fügt keine neuen Dateien hinzu, sondern stellt nur Änderungen an bereits verfolgten Dateien bereit.
git add -A
ist eine praktische Abkürzung, um beides zu tun.
Sie können die Unterschiede mit so etwas testen (beachten Sie, dass für Git Version 2.x Ihre Ausgabe für git add .
git status
Wille Sei anders):
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
-
Wie wäre es mit dem Unterschied zw
git add *
?– Jared
24. März 2012 um 0:52 Uhr
-
schade
git add -A -p
funktioniert nicht wie erwartet (fragen Sie interaktiv nach nicht getrackten Dateien)– Erik Kaplun
15. Februar 2014 um 22:52 Uhr
-
Bitte aktualisieren Sie die Antwort. Es sollte sein:
git add -A :/
odergit add -A .
– Gabriel Lamas
4. Mai 2014 um 8:19 Uhr
-
Zur Information, in neueren Versionen von git
git add -u
wurdegit add -u :/
wobei der letztere Parameter ein Pfad ist, der es Ihnen ermöglicht, bestimmte Verzeichnisse zu -u,:/
behandelt den ganzen Baum.– Brizee
5. Juni 2014 um 9:49 Uhr
-
@CharlesBailey, Git wirklich Liebe Dinge ohne guten Grund kompliziert machen. Gibt es eine Real Anwendungsfall, den jemand speziell benötigen würde
git add -u
odergit add .
und dadurch macht es ihm das Leben leichter, selbst nach Berücksichtigung der zusätzlichen mentalen Steuer, die hinzugefügt wird, um sicherzustellen, dass es keine Synchronisierungsprobleme gibt? Ich frage mich, warum Git nicht weiter aufgeteilt wirdadd -u
in zwei getrennte Befehleadd -u1
undadd-u2
wobei einer für Dateien arbeitet, die mit Ziffern beginnen, und der andere für Dateien, die mit Nicht-Ziffern beginnen– Schrittmacher
20. Oktober 2015 um 10:15 Uhr
Entwickler
Git-Version 1.x
Befehl | Neue Dateien | Geänderte Dateien | Gelöschte Dateien | Beschreibung |
---|---|---|---|---|
git add -A |
✔️ | ✔️ | ✔️ | Stellen Sie alle (neuen, geänderten, gelöschten) Dateien bereit |
git add . |
✔️ | ✔️ | ❌ | Neue und geänderte Dateien nur im aktuellen Ordner bereitstellen |
git add -u |
❌ | ✔️ | ✔️ | Nur geänderte und gelöschte Dateien inszenieren |
Git-Version 2.x
Befehl | Neue Dateien | Geänderte Dateien | Gelöschte Dateien | Beschreibung |
---|---|---|---|---|
git add -A |
✔️ | ✔️ | ✔️ | Stellen Sie alle (neuen, geänderten, gelöschten) Dateien bereit |
git add . |
✔️ | ✔️ | ✔️ | Staging aller (neuen, geänderten, gelöschten) Dateien im aktuellen Ordner |
git add --ignore-removal . |
✔️ | ✔️ | ❌ | Nur neue und geänderte Dateien bereitstellen |
git add -u |
❌ | ✔️ | ✔️ | Nur geänderte und gelöschte Dateien inszenieren |
Flags in Langform:
git add -A
ist äquivalent zugit add --all
git add -u
ist äquivalent zugit add --update
Weiterlesen:
- Git für Einsteiger: Der definitive Praxisleitfaden
- Ressourcen zum Erlernen von Git
- Lernen Sie Git-Branching
- Erklären Sie Git mit D3
-
Danke für den Tisch. Gibt es eine Möglichkeit, nur die geänderten Dateien hinzuzufügen? Keine neuen Dateien oder gelöschte Dateien
– Gökul NK
13. Januar 2015 um 12:43 Uhr
-
@Gokul: Laut diesem Beitrag können Sie verwenden
git diff-files -z --diff-filter=M --name-only | xargs -0 git add
nur die geänderten Dateien hinzuzufügen, aber nicht die neuen Dateien oder die Löschungen.– Ville
8. Mai 2015 um 5:41 Uhr
-
Dies ist nicht ganz richtig, wie
git add .
fügt nur neue Dateien hinzu, die sich im aktuellen Pfad befinden. Dh wenn Sie ein neues Verzeichnis haben../foo
,git add -A
wird es inszenieren,git add .
wird nicht.– Milo Wielondek
6. Juli 2015 um 12:44 Uhr
-
Damit,
git add .
ist äquivalent zugit add -A .
was gleichbedeutend ist mitgit add "*"
– flow2k
25. März 2018 um 23:21 Uhr
-
Ich bin immer noch verwirrt über git add “*”, können Sie es bitte etwas näher erläutern?
– HS Umer farooq
21. November 2018 um 15:12 Uhr
VonC
Mit Git 2.0, git add -A
ist voreingestellt: git add .
gleich git add -A .
.
git add <path>
ist das gleiche wie “git add -A <path>
“jetzt, damit”git add dir/
” bemerkt Pfade, die Sie aus dem Verzeichnis entfernt haben, und zeichnet das Entfernen auf.
In älteren Git-Versionen “git add <path>
“Entfernungen ignoriert.Sie können sagen “
git add --ignore-removal <path>
“, um nur hinzugefügte oder geänderte Pfade hinzuzufügen<path>
wenn du wirklich willst.
git add -A
ist wie git add :/
(fügen Sie alles aus dem obersten Git-Repo-Ordner hinzu).
Beachten Sie, dass Sie mit git 2.7 (November 2015) einen Ordner mit dem Namen “:
“!
Sehen begehen 29abb33 (25. Oktober 2015) von Junio C Hamano (gitster
).
Beachten Sie, dass ab git 2.0 (Q1 oder Q2 2014)wenn wir darüber sprechen git add .
(aktueller Pfad innerhalb des Arbeitsbaums), müssen Sie ‘.
‘ in dem anderen git add
auch Befehle.
Das bedeutet:
“
git add -A .
” ist äquivalent zu “git add .; git add -u .
“
(Beachten Sie das zusätzliche ‘.
‘ zum git add -A
und git add -u
)
Weil git add -A
oder git add -u
würde (nur ab Git 2.0) auf dem laufen gesamten Arbeitsbaumund nicht nur auf dem aktuellen Weg.
Diese Befehle werden Arbeiten Sie mit dem gesamten Baum in Git 2.0, um die Konsistenz mit “
git commit -a
” und andere Befehle. Weil es keinen Mechanismus geben wird, um “git add -u
„so tun, als ob“git add -u .
“, es ist wichtig für diejenigen, die daran gewöhnt sind “git add -u
” (ohne Pfadspezifikation) Aktualisieren des Index nur für Pfade im aktuellen Unterverzeichnis, um mit dem Training ihrer Finger zu beginnen, explizit zu sagen “git add -u .
” wenn sie es ernst meinen, bevor Git 2.0 kommt.Eine Warnung wird ausgegeben, wenn diese Befehle ohne Pfadangabe ausgeführt werden und wenn Sie lokale Änderungen außerhalb des aktuellen Verzeichnisses habenda sich das Verhalten in Git 2.0 in einer solchen Situation von der heutigen Version unterscheidet.
-
@NickVolynkin Das ist großartig! Ich freue mich zu sehen, dass die internationale Gemeinschaft von SO wie beabsichtigt funktioniert. Als Referenz: ru.stackoverflow.com/a/431840
– VonC
26. Juni 2015 um 20:53 Uhr
-
@VonC, schön, die Git-Leute hatten tatsächlich die Frechheit zu sagen, dass ihr Update “die Dinge konsistenter machen” wird. Was sie getan hatten, führte zu noch mehr Verwirrung und Ungereimtheiten. Es gibt 26 Alphabete und sie hatte um ein bereits verwendetes Flag wiederzuverwenden.
– Schrittmacher
20. Oktober 2015 um 10:06 Uhr
Richard
Aus Charles ‘Anweisungen würde mein vorgeschlagenes Verständnis nach dem Testen wie folgt lauten:
# For the next commit
$ git add . # Add only files created/modified to the index and not those deleted
$ git add -u # Add only files deleted/modified to the index and not those created
$ git add -A # Do both operations at once, add to all files to the index
Dieser Blogbeitrag kann auch hilfreich sein, um zu verstehen, in welchen Situationen diese Befehle angewendet werden können: Gelöschte Dateien aus Ihrem Git-Arbeitsverzeichnis entfernen.
0xF
Dinge haben sich geändert mit Git 2.0 (2014-05-28):
-A
ist jetzt die Vorgabe- Das alte Verhalten ist jetzt mit verfügbar
--ignore-removal
. git add -u
undgit add -A
in einem Unterverzeichnis ohne Pfade auf der Kommandozeile den gesamten Baum bearbeiten.
Für Git 2 lautet die Antwort also:
git add .
undgit add -A .
neue/geänderte/gelöschte Dateien im aktuellen Verzeichnis hinzufügengit add --ignore-removal .
fügt neue/geänderte Dateien im aktuellen Verzeichnis hinzugit add -u .
fügt geänderte/gelöschte Dateien im aktuellen Verzeichnis hinzu- Fügen Sie ohne den Punkt alle Dateien im Projekt hinzu, unabhängig vom aktuellen Verzeichnis.
-
Ich glaube nicht, dass das richtig ist. Bei Verwendung von git v2.10.windows.2 „git add“ wird „Nichts angegeben, nichts hinzugefügt“ zurückgegeben. ‘git add -A’ fügt alle geänderten Dateien hinzu. Was darauf hindeutet, dass ‘-A’ nicht die Standardeinstellung ist.
– Neutrino
5. Oktober 2017 um 12:47 Uhr
-
Letzter Punkt “Ohne den Punkt alle Dateien im Projekt hinzufügen, unabhängig vom aktuellen Verzeichnis.” funktioniert nicht. Wenn ich {code}git add{code} (ohne .) sage, dann für eine Nachricht mit Hinweis, ob ich {code}git add sagen möchte. {Code}
– Benutzer85
11. August 2020 um 6:55 Uhr
Im Git 2.x:
-
Wenn Sie sich direkt an der befinden Arbeitsverzeichnisdann
git add -A
undgit add .
Arbeit ohne den Unterschied. -
Wenn Sie sich in einem Unterverzeichnis der Arbeitsverzeichnis,
git add -A
fügt alle Dateien aus dem gesamten hinzu Arbeitsverzeichnisundgit add .
fügt Dateien von Ihrem hinzu Aktuelles Verzeichnis.
Und das ist alles.
-
Ich glaube nicht, dass das richtig ist. Bei Verwendung von git v2.10.windows.2 „git add“ wird „Nichts angegeben, nichts hinzugefügt“ zurückgegeben. ‘git add -A’ fügt alle geänderten Dateien hinzu. Was darauf hindeutet, dass ‘-A’ nicht die Standardeinstellung ist.
– Neutrino
5. Oktober 2017 um 12:47 Uhr
-
Letzter Punkt “Ohne den Punkt alle Dateien im Projekt hinzufügen, unabhängig vom aktuellen Verzeichnis.” funktioniert nicht. Wenn ich {code}git add{code} (ohne .) sage, dann für eine Nachricht mit Hinweis, ob ich {code}git add sagen möchte. {Code}
– Benutzer85
11. August 2020 um 6:55 Uhr
Peter Mortensen
Eine destilliertere schnelle Antwort:
Tut beides unten (gleich wie git add –all)
git add -A
Stellt neue + geänderte Dateien bereit
git add .
Stadien modifizierte + gelöschte Dateien
git add -u
-
Hallo, was wäre, wenn Sie nur geänderte Dateien bereitstellen wollten? Wie würdest du das machen?
– TheGrapeBeyond
26. Mai 2014 um 16:06 Uhr
-
Hallo, na gute Frage. Soweit ich weiß, gibt es dafür kein einfaches Flag. git diff-files -z –diff-filter=M –name-only | xargs -0 git hinzufügen von -> stackoverflow.com/questions/14368093/…
– K. Kilian Lindberg
28. Mai 2014 um 13:19 Uhr
-
Eigentlich ist es
git add :/
+git add -u :/
– Nick Wolynkin
24. Juli 2015 um 10:55 Uhr