Unterschied zwischen „git add -A“ und „git add .“

Lesezeit: 9 Minuten

Unterschied zwischen „git add A und „git add
cmcginty

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
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 :/ oder git add -A .

    – Gabriel Lamas

    4. Mai 2014 um 8:19 Uhr

  • Zur Information, in neueren Versionen von git git add -u wurde git 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 oder git 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 wird add -u in zwei getrennte Befehle add -u1 und add-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


Unterschied zwischen „git add A und „git add
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 zu git add --all
  • git add -u ist äquivalent zu git add --update

Weiterlesen:

  • 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 zu git add -A .was gleichbedeutend ist mit git 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

Unterschied zwischen „git add A und „git add
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

1646891291 708 Unterschied zwischen „git add A und „git add
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.

1646891291 867 Unterschied zwischen „git add A und „git add
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 und git add -A in einem Unterverzeichnis ohne Pfade auf der Kommandozeile den gesamten Baum bearbeiten.

Für Git 2 lautet die Antwort also:

  • git add . und git add -A . neue/geänderte/gelöschte Dateien im aktuellen Verzeichnis hinzufügen
  • git add --ignore-removal . fügt neue/geänderte Dateien im aktuellen Verzeichnis hinzu
  • git 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 und git add . Arbeit ohne den Unterschied.

  • Wenn Sie sich in einem Unterverzeichnis der Arbeitsverzeichnis, git add -A fügt alle Dateien aus dem gesamten hinzu Arbeitsverzeichnisund git 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

1646891291 976 Unterschied zwischen „git add A und „git add
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

986470cookie-checkUnterschied zwischen „git add -A“ und „git add .“

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy