Der Befehl git add [--all|-A]
scheint identisch zu sein mit git add .
. Ist dies richtig? Wenn nicht, wie unterscheiden sie sich?
Hallo, was wäre, wenn Sie nur die geänderten Dateien bereitstellen wollten? Wie würden Sie das tun?
Der Befehl git add [--all|-A]
scheint identisch zu sein mit git add .
. Ist dies richtig? Wenn nicht, wie unterscheiden sie sich?
Hallo, was wäre, wenn Sie nur die geänderten Dateien bereitstellen wollten? Wie würden Sie das tun?
Hallo, eine gute Frage. Es gibt keine einfache Flagge für das, soweit ich weiß git diff-files -z --diff-filter=M --name-only | xargs -0 git add from -> stackoverflow.com/questions/14368093/
Beide git add .
y git add -A
werden alle neuen, geänderten und gelöschten Dateien in den neueren Versionen von Git bereitgestellt.
Der Unterschied besteht darin, dass git add -A
stuft Dateien in "höheren, aktuellen und Unterverzeichnissen" ein, die zu Ihrem Git-Arbeits-Repository gehören. Aber die Durchführung einer git add .
nur die Dateien im aktuellen Verzeichnis und den folgenden Unterverzeichnissen ( no die außerhalb, d.h. in höheren Verzeichnissen liegenden Dateien).
Hier ist ein Beispiel:
/my-repo
.git/
subfolder/
nested-file.txt
rootfile.txt
Wenn Ihr aktuelles Arbeitsverzeichnis /my-repo
und Sie tun rm rootfile.txt
entonces cd subfolder
gefolgt von git add .
dann wird es no die gelöschte Datei bereitstellen. Aber tun git add -A
wird diese Änderung auf jeden Fall durchführen, egal von wo aus Sie den Befehl ausführen.
Ich hoffe, dass dies etwas mehr Klarheit schafft.
!The syntax is
git add <limiters> <pathspec>
! Aka
git add (nil/-u/-A) (nil/./pathspec)
Begrenzer können -u oder -A oder Null sein.
Pathspec kann ein Dateipfad oder ein Punkt sein, '.', um das aktuelle Verzeichnis anzugeben.
Wichtiges Hintergrundwissen darüber, wie Git "hinzufügt":
-A
ist ebenfalls angegeben. Dot bezieht sich ausschließlich auf das aktuelle Verzeichnis - Pfade, die darüber oder darunter liegen, werden nicht berücksichtigt.Mit diesem Wissen können wir nun die obigen Antworten anwenden.
Die Begrenzer sind wie folgt.
-u
= --update
= Teilmenge zu verfolgten Dateien => Hinzufügen = Nein; Ändern = Ja; Löschen = Ja. => wenn die Sendung wird verfolgt.-A
= --all
(keine solche -a
(was zu einem Syntaxfehler führt) = Obermenge aller nicht verfolgten/verfolgten Dateien, es sei denn, in Git vor 2.0, wo bei Angabe des Punktes filespec nur dieser bestimmte Ordner berücksichtigt wird. wenn der Gegenstand erkannt wird, git add -A
wird sie finden und hinzufügen.Die Pfadangabe lautet wie folgt.
git add -A .
git add -u .
Zusammenfassend kann ich sagen, dass meine Politik so aussieht:
git status
..gitignore
Datei, so dass normalerweise nur Dateien, die von Interesse sind, nicht aufgespürt und/oder nicht erkannt werden.El -A
fügt Indexeinträge hinzu, ändert sie und entfernt sie, um sie an den Arbeitsbaum anzupassen.
In Git 2 wird die -A
ist jetzt die Standardeinstellung.
Wenn ein .
hinzugefügt, die den Umfang der Aktualisierung auf das Verzeichnis beschränkt, in dem Sie sich gerade befinden, wie in der Git-Dokumentation
Wenn keine
<pathspec>
angegeben wird, werden alle Dateien im gesamten Arbeitsbaum aktualisiert (alte Versionen von Git beschränkten die Aktualisierung auf das aktuelle Verzeichnis und seine Unterverzeichnisse).
Eine Sache, die ich hinzufügen möchte, ist, dass, wenn die --interactive
o -p
Modus verwendet wird, dann git add
wird sich so verhalten, als ob die Aktualisierung ( -u
) verwendet wurde und keine neuen Dateien hinzugefügt wurden.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.