Einrichtung und Konfiguration
Projekte holen und erstellen
Grundlegende Snapshots
Branching und Merging
Projekte teilen und aktualisieren
Inspektion und Vergleich
Patching
Debugging
Externe Systeme
Server-Administration
Anleitungen
- gitattributes
- Konventionen der Kommandozeile
- Tägliches Git
- Häufig gestellte Fragen (FAQ)
- Glossar
- Hooks
- gitignore
- gitmodules
- Revisionen
- Submodule
- Tutorial
- Workflows
- Alle Anleitungen...
Administration
Plumbing-Befehle
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 keine Änderungen
-
2.51.0
2025-08-18
- 2.48.1 → 2.50.1 keine Änderungen
-
2.48.0
2025-01-10
- 2.46.1 → 2.47.3 keine Änderungen
- 2.46.0 keine Änderungen
- 2.45.1 → 2.45.4 keine Änderungen
-
2.45.0
2024-04-29
- 2.43.2 → 2.44.4 keine Änderungen
-
2.43.1
2024-02-09
- 2.40.1 → 2.43.0 keine Änderungen
-
2.40.0
2023-03-12
- 2.38.1 → 2.39.5 keine Änderungen
-
2.38.0
2022-10-02
- 2.37.4 → 2.37.7 keine Änderungen
-
2.37.3
2022-08-30
- 2.34.1 → 2.37.2 keine Änderungen
-
2.34.0
2021-11-15
- 2.25.1 → 2.33.8 keine Änderungen
-
2.25.0
2020-01-13
- 2.22.1 → 2.24.4 keine Änderungen
- 2.22.0 keine Änderungen
- 2.21.1 → 2.21.4 keine Änderungen
-
2.21.0
2019-02-24
- 2.18.1 → 2.20.5 keine Änderungen
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 keine Änderungen
-
2.16.6
2019-12-06
- 2.15.4 keine Änderungen
-
2.14.6
2019-12-06
- 2.11.4 → 2.13.7 keine Änderungen
-
2.10.5
2017-09-22
- 2.8.6 → 2.9.5 keine Änderungen
-
2.7.6
2017-07-30
- 2.5.6 → 2.6.7 keine Änderungen
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 keine Änderungen
-
2.0.5
2014-12-17
SYNOPSIS
gitadd[--verbose|-v] [--dry-run|-n] [--force|-f] [--interactive|-i] [--patch|-p] [--edit|-e] [--[no-]all|-A|--[no-]ignore-removal| [--update|-u]] [--sparse] [--intent-to-add|-N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize] [--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>…]
BESCHREIBUNG
Fügt Inhalte von neuen oder geänderten Dateien zum Index hinzu. Der "Index" (auch bekannt als "Staging Area") ist das, was Sie verwenden, um die Inhalte des nächsten Commits vorzubereiten.
Wenn Sie git commit ohne weitere Argumente ausführen, werden nur die gestagten Änderungen committet. Wenn Sie beispielsweise file.c bearbeitet haben und Ihre Änderungen an dieser Datei committen möchten, können Sie Folgendes ausführen:
git add file.c git commit
Sie können auch nur Teile Ihrer Änderungen an einer Datei mit git add -p hinzufügen.
Dieser Befehl kann mehrmals vor einem Commit ausgeführt werden. Er fügt nur den Inhalt der angegebenen Datei(en) zum Zeitpunkt der Ausführung des add-Befehls hinzu. Wenn Sie möchten, dass spätere Änderungen im nächsten Commit enthalten sind, müssen Sie git add erneut ausführen, um den neuen Inhalt zum Index hinzuzufügen.
Der Befehl git status kann verwendet werden, um eine Zusammenfassung darüber zu erhalten, welche Dateien Änderungen aufweisen, die für den nächsten Commit gestaged sind.
Der Befehl git add fügt standardmäßig keine ignorierten Dateien hinzu. Sie können die Option --force verwenden, um ignorierte Dateien hinzuzufügen. Wenn Sie den exakten Dateinamen einer ignorierten Datei angeben, schlägt git add mit einer Liste der ignorierten Dateien fehl. Andernfalls wird die Datei stillschweigend ignoriert.
Siehe git-commit[1] für alternative Möglichkeiten, Inhalte zu einem Commit hinzuzufügen.
OPTIONEN
- <pathspec>...
-
Dateien, aus denen Inhalte hinzugefügt werden sollen. Dateimuster (z.B.
*.c) können angegeben werden, um alle passenden Dateien hinzuzufügen. Auch ein führender Verzeichnisname (z.B.dir, umdir/file1unddir/file2hinzuzufügen) kann angegeben werden, um den Index so anzupassen, dass er den aktuellen Zustand des Verzeichnisses als Ganzes widerspiegelt (z.B. die Angabe vondirzeichnet nicht nur eine im Arbeitsbaum geänderte Dateidir/file1und eine zum Arbeitsbaum hinzugefügte Dateidir/file2auf, sondern auch eine aus dem Arbeitsbaum entfernte Dateidir/file3). Beachten Sie, dass ältere Git-Versionen entfernte Dateien ignorierten; verwenden Sie die Option--no-all, wenn Sie geänderte oder neue Dateien hinzufügen, aber entfernte ignorieren möchten.Weitere Details zur <pathspec>-Syntax finden Sie im Eintrag pathspec in gitglossary[7].
-n--dry-run-
Fügt die Datei(en) nicht tatsächlich hinzu, sondern zeigt nur an, ob sie existieren und/oder ignoriert werden.
-v--verbose-
Ausführlich sein.
-f--force-
Erlaubt das Hinzufügen von ansonsten ignorierten Dateien.
--sparse-
Erlaubt das Aktualisieren von Index-Einträgen außerhalb des Sparse-Checkout-Kegels. Normalerweise weigert sich
gitadd, Index-Einträge zu aktualisieren, deren Pfade nicht in den Sparse-Checkout-Kegel passen, da diese Dateien ohne Vorwarnung aus dem Arbeitsbaum entfernt werden könnten. Siehe git-sparse-checkout[1] für weitere Details. -i--interactive-
Fügt geänderte Inhalte im Arbeitsbaum interaktiv zum Index hinzu. Optionale Pfadargumente können angegeben werden, um die Operation auf einen Teil des Arbeitsbaums zu beschränken. Siehe "Interaktiver Modus" für Details.
-p--patch-
Wählt interaktiv Hunks von Patches zwischen dem Index und dem Arbeitsbaum aus und fügt sie dem Index hinzu. Dies gibt dem Benutzer die Möglichkeit, die Unterschiede zu überprüfen, bevor geänderte Inhalte zum Index hinzugefügt werden.
Dies führt effektiv
add--interactiveaus, umgeht aber das anfängliche Menü und springt direkt zum Unterbefehlpatch. Siehe "Interaktiver Modus" für Details. -U<n>--unified=<n>-
Generiert Diffs mit <n> Zeilen Kontext. Standard ist
diff.contextoder 3, wenn die Konfigurationsoption nicht gesetzt ist. --inter-hunk-context=<n>-
Zeigt den Kontext zwischen Diff-Hunks bis zur angegebenen Anzahl von <n> Zeilen an und fasst so nahe beieinander liegende Hunks zusammen. Standard ist
diff.interHunkContextoder 0, wenn die Konfigurationsoption nicht gesetzt ist. -e--edit-
Öffnet den Diff zum Index in einem Editor und lässt den Benutzer ihn bearbeiten. Nach dem Schließen des Editors werden die Hunk-Header angepasst und der Patch auf den Index angewendet.
Die Absicht dieser Option ist es, Zeilen des Patches auszuwählen und zu wählen oder sogar den Inhalt der Zeilen zu ändern, die gestaged werden sollen. Dies kann schneller und flexibler sein als die Verwendung des interaktiven Hunk-Selectors. Es ist jedoch leicht, sich selbst zu verwirren und einen Patch zu erstellen, der nicht auf den Index angewendet werden kann. Siehe EDITING PATCHES unten.
-u--update-
Aktualisiert den Index nur dort, wo bereits ein Eintrag vorhanden ist, der mit <pathspec> übereinstimmt. Dies entfernt sowie modifiziert Index-Einträge, um mit dem Arbeitsbaum übereinzustimmen, fügt aber keine neuen Dateien hinzu.
Wenn keine <pathspec> angegeben ist, wenn die Option
-uverwendet wird, werden alle verfolgten Dateien im gesamten Arbeitsbaum aktualisiert (alte Git-Versionen beschränkten die Aktualisierung auf das aktuelle Verzeichnis und seine Unterverzeichnisse). -A--all--no-ignore-removal-
Aktualisiert den Index nicht nur dort, wo der Arbeitsbaum eine Datei hat, die mit <pathspec> übereinstimmt, sondern auch dort, wo der Index bereits einen Eintrag hat. Dies fügt hinzu, modifiziert und entfernt Index-Einträge, um mit dem Arbeitsbaum übereinzustimmen.
Wenn keine <pathspec> angegeben ist, wenn die Option
-Averwendet wird, werden alle Dateien im gesamten Arbeitsbaum aktualisiert (alte Git-Versionen beschränkten die Aktualisierung auf das aktuelle Verzeichnis und seine Unterverzeichnisse). --no-all--ignore-removal-
Aktualisiert den Index, indem neue, dem Index unbekannte Dateien und im Arbeitsbaum geänderte Dateien hinzugefügt werden, aber Dateien, die aus dem Arbeitsbaum entfernt wurden, ignoriert werden. Diese Option ist ein No-Op, wenn keine <pathspec> verwendet wird.
Diese Option richtet sich hauptsächlich an Benutzer, die an ältere Git-Versionen gewöhnt sind, deren
gitadd<pathspec>... ein Synonym fürgitadd--no-all<pathspec>... war, d.h. entfernte Dateien ignoriert wurden. -N--intent-to-add-
Zeichnet nur die Tatsache auf, dass der Pfad später hinzugefügt wird. Ein Eintrag für den Pfad wird im Index ohne Inhalt platziert. Dies ist unter anderem nützlich, um den ungestagten Inhalt solcher Dateien mit
gitdiffanzuzeigen und sie mitgitcommit-azu committen. --refresh-
Fügt die Datei(en) nicht hinzu, sondern aktualisiert nur deren stat()-Informationen im Index.
--ignore-errors-
Wenn einige Dateien aufgrund von Fehlern bei der Indexierung nicht hinzugefügt werden konnten, brechen Sie die Operation nicht ab, sondern fügen Sie die anderen hinzu. Der Befehl wird trotzdem mit einem nicht-null Status beendet. Die Konfigurationsvariable
add.ignoreErrorskann auf true gesetzt werden, um dies zum Standardverhalten zu machen. --ignore-missing-
Diese Option kann nur zusammen mit
--dry-runverwendet werden. Mit dieser Option kann der Benutzer überprüfen, ob eine der angegebenen Dateien ignoriert würde, unabhängig davon, ob sie bereits im Arbeitsbaum vorhanden ist oder nicht. --no-warn-embedded-repo-
Standardmäßig gibt
gitaddeine Warnung aus, wenn ein eingebettetes Repository zum Index hinzugefügt wird, ohnegitsubmoduleaddzu verwenden, um einen Eintrag in.gitmoduleszu erstellen. Diese Option unterdrückt die Warnung (z. B. wenn Sie manuell Operationen mit Submodulen durchführen). --renormalize-
Wendet den "clean"-Prozess frisch auf alle verfolgten Dateien an, um sie erneut zum Index hinzuzufügen. Dies ist nützlich nach der Änderung der Konfiguration
core.autocrlfoder des Attributstext, um Dateien zu korrigieren, die mit falschen CRLF/LF-Zeilenenden hinzugefügt wurden. Diese Option impliziert-u. Einzelne CR-Zeichen bleiben unverändert, sodass ein CRLF zu LF bereinigt wird, eine CRCRLF-Sequenz jedoch nur teilweise zu CRLF. --chmod=(+|-)x-
Überschreibt das ausführbare Bit der hinzugefügten Dateien. Das ausführbare Bit wird nur im Index geändert, die Dateien auf der Festplatte bleiben unverändert.
--pathspec-from-file=<file>-
Pathspec wird in <file> anstelle von Kommandozeilenargumenten übergeben. Wenn <file> exakt
-ist, wird die Standardeingabe verwendet. Pathspec-Elemente werden durch LF oder CR/LF getrennt. Pathspec-Elemente können wie für die Konfigurationsvariablecore.quotePatherklärt (siehe git-config[1]) zitiert werden. Siehe auch--pathspec-file-nulund global--literal-pathspecs. --pathspec-file-nul-
Nur relevant mit
--pathspec-from-file. Pfadangaben werden durch ein NUL-Zeichen getrennt und alle anderen Zeichen werden wörtlich genommen (einschließlich Zeilenumbrüchen und Anführungszeichen). ---
Diese Option kann verwendet werden, um Kommandozeilenoptionen von der Liste der Dateien zu trennen (nützlich, wenn Dateinamen mit Kommandozeilenoptionen verwechselt werden könnten).
BEISPIELE
-
Fügt Inhalte aus allen
*.txt-Dateien im VerzeichnisDocumentationund seinen Unterverzeichnissen hinzu$ git add Documentation/\*.txt
Beachten Sie, dass der Stern
*in diesem Beispiel von der Shell maskiert wird; dies ermöglicht es dem Befehl, die Dateien aus den Unterverzeichnissen desDocumentation/-Verzeichnisses einzubeziehen. -
Betrachtet das Hinzufügen von Inhalten aus allen
git-*.sh-Skripten$ git add git-*.sh
Da dieses Beispiel die Shell den Stern erweitern lässt (d.h. Sie listen die Dateien explizit auf), werden
subdir/git-foo.shnicht berücksichtigt.
INTERAKTIVER MODUS
Wenn der Befehl in den interaktiven Modus wechselt, zeigt er die Ausgabe des Unterbefehls status an und wechselt dann in seine interaktive Befehlsschleife.
Die Befehlsschleife zeigt die Liste der verfügbaren Unterbefehle an und gibt eine Eingabeaufforderung "What now> " aus. Im Allgemeinen können Sie, wenn die Eingabeaufforderung mit einem einzelnen > endet, nur eine der angezeigten Optionen auswählen und Enter drücken, wie hier:
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 1
Sie könnten auch s oder sta oder status oben sagen, solange die Wahl eindeutig ist.
Die Hauptbefehlsschleife hat 6 Unterbefehle (plus Hilfe und Beenden).
- status
-
Dies zeigt den Unterschied zwischen
HEADund dem Index an (d.h. was committet wird, wenn Siegitcommitsagen) und zwischen dem Index und den Arbeitsbaumdateien (d.h. was Sie vorgitcommitmitgitaddweiter stagen könnten) für jeden Pfad. Eine Beispielausgabe sieht so aus:staged unstaged path 1: binary nothing foo.png 2: +403/-35 +1/-1 add-interactive.cSie zeigt, dass
foo.pngUnterschiede zuHEADaufweist (aber das ist binär, daher kann die Zeilenanzahl nicht angezeigt werden) und dass es keinen Unterschied zwischen der indizierten Kopie und der Arbeitsbaumversion gibt (wenn die Arbeitsbaumversion ebenfalls unterschiedlich wäre, wäre anstelle von nichts binär angezeigt worden). Die andere Datei,add-interactive.c, hat 403 Zeilen hinzugefügt und 35 Zeilen gelöscht, wenn Sie das, was sich im Index befindet, committen, aber die Arbeitsbaumdatei hat weitere Änderungen (eine Hinzufügung und eine Löschung). - update
-
Dies zeigt die Statusinformationen an und gibt eine "Update>>"-Eingabeaufforderung aus. Wenn die Eingabeaufforderung mit doppelten >> endet, können Sie mehrere Auswahlen treffen, die mit Leerzeichen oder Kommas verknüpft sind. Sie können auch Bereiche angeben. Z.B. "2-5 7,9" wählt 2,3,4,5,7,9 aus der Liste aus. Wenn die zweite Zahl in einem Bereich weggelassen wird, werden alle verbleibenden Patches übernommen. Z.B. "7-" wählt 7,8,9 aus der Liste aus. Sie können * sagen, um alles auszuwählen.
Die von Ihnen ausgewählten Elemente werden dann mit * hervorgehoben, wie hier:
staged unstaged path 1: binary nothing foo.png * 2: +403/-35 +1/-1 add-interactive.c
Um eine Auswahl zu entfernen, stellen Sie der Eingabe ein - voran, wie hier:
Update>> -2
Nachdem Sie die Auswahl getroffen haben, antworten Sie mit einer leeren Zeile, um die Inhalte von Arbeitsbaumdateien für die ausgewählten Pfade im Index zu stagen.
- revert
-
Dies hat eine sehr ähnliche Benutzeroberfläche wie update, und die gestagten Informationen für ausgewählte Pfade werden auf die HEAD-Version zurückgesetzt. Das Zurücksetzen neuer Pfade macht sie untracked.
- add untracked
-
Dies hat eine sehr ähnliche Benutzeroberfläche wie update und revert und ermöglicht es Ihnen, untracked Pfade zum Index hinzuzufügen.
- patch
-
Dies ermöglicht es Ihnen, einen Pfad aus einer status-ähnlichen Auswahl auszuwählen. Nach der Auswahl des Pfades wird der Unterschied zwischen dem Index und der Arbeitsbaumdatei angezeigt, und es wird gefragt, ob Sie die Änderung jedes Hunks stagen möchten. Sie können eine der folgenden Optionen auswählen und Enter drücken:
y - stage this hunk n - do not stage this hunk q - quit; do not stage this hunk or any of the remaining ones a - stage this hunk and all later hunks in the file d - do not stage this hunk or any of the later hunks in the file g - select a hunk to go to / - search for a hunk matching the given regex j - go to the next undecided hunk, roll over at the bottom J - go to the next hunk, roll over at the bottom k - go to the previous undecided hunk, roll over at the top K - go to the previous hunk, roll over at the top s - split the current hunk into smaller hunks e - manually edit the current hunk p - print the current hunk P - print the current hunk using the pager ? - print help
Nachdem Sie über alle Hunks entschieden haben, wird der Index mit den ausgewählten Hunks aktualisiert, wenn es Hunks gab, die ausgewählt wurden.
Sie können das Drücken von Enter hier vermeiden, indem Sie die Konfigurationsvariable
interactive.singleKeyauftruesetzen. - diff
-
Dies ermöglicht Ihnen zu überprüfen, was committet wird (d.h. zwischen
HEADund dem Index).
PATCHES BEARBEITEN
Das Aufrufen von git add -e oder die Auswahl von e aus dem interaktiven Hunk-Selektor öffnet einen Patch in Ihrem Editor; nach dem Schließen des Editors wird das Ergebnis auf den Index angewendet. Sie können beliebige Änderungen am Patch vornehmen, aber beachten Sie, dass einige Änderungen verwirrende Ergebnisse haben oder sogar zu einem Patch führen können, der nicht angewendet werden kann. Wenn Sie den Vorgang ganz abbrechen möchten (d.h. nichts Neues in den Index stagen), löschen Sie einfach alle Zeilen des Patches. Die folgende Liste beschreibt einige gängige Dinge, die Sie in einem Patch sehen können, und welche Bearbeitungsoperationen sinnvoll sind.
- hinzugefügter Inhalt
-
Hinzugefügter Inhalt wird durch Zeilen dargestellt, die mit "+" beginnen. Sie können das Stagen von Hinzufügungszeilen verhindern, indem Sie sie löschen.
- entfernter Inhalt
-
Entfernter Inhalt wird durch Zeilen dargestellt, die mit "-" beginnen. Sie können das Stagen ihrer Entfernung verhindern, indem Sie das "-" in ein " " (Leerzeichen) umwandeln.
- geänderter Inhalt
-
Geänderter Inhalt wird durch "-" Zeilen (Entfernung des alten Inhalts) gefolgt von "+" Zeilen (Hinzufügung des Ersatzinhalts) dargestellt. Sie können das Stagen der Änderung verhindern, indem Sie "-" Zeilen in " " umwandeln und "+" Zeilen löschen. Beachten Sie, dass die Änderung nur der Hälfte des Paares wahrscheinlich verwirrende Änderungen im Index einführt.
Es gibt auch komplexere Operationen, die durchgeführt werden können. Aber beachten Sie, dass der Arbeitsbaum die Änderung im Index zu "rückgängig machen" scheint, da der Patch nur auf den Index und nicht auf den Arbeitsbaum angewendet wird. Zum Beispiel wird das Einfügen einer neuen Zeile in den Index, die weder in HEAD noch im Arbeitsbaum vorhanden ist, die neue Zeile für den Commit stagen, aber die Zeile wird im Arbeitsbaum als rückgängig gemacht erscheinen.
Vermeiden Sie die Verwendung dieser Konstrukte oder tun Sie dies mit äußerster Vorsicht.
- Entfernen von unberührtem Inhalt
-
Inhalt, der sich zwischen Index und Arbeitsbaum nicht unterscheidet, kann als Kontextzeilen angezeigt werden, die mit einem " " (Leerzeichen) beginnen. Sie können Kontextzeilen zum Entfernen stagen, indem Sie das Leerzeichen in ein "-" umwandeln. Die resultierende Arbeitsbaumdatei wird den Inhalt wieder hinzuzufügen scheinen.
- Ändern von vorhandenem Inhalt
-
Man kann auch Kontextzeilen ändern, indem man sie zum Entfernen stagt (indem man " " in "-" umwandelt) und eine "+" Zeile mit dem neuen Inhalt hinzufügt. Ähnlich kann man "+" Zeilen für bestehende Hinzufügungen oder Änderungen ändern. In allen Fällen wird die neue Änderung im Arbeitsbaum als rückgängig gemacht erscheinen.
- neuer Inhalt
-
Sie können auch neuen Inhalt hinzufügen, der im Patch nicht vorhanden ist; fügen Sie einfach neue Zeilen hinzu, die jeweils mit "+" beginnen. Die Hinzufügung wird im Arbeitsbaum als rückgängig gemacht erscheinen.
Es gibt auch mehrere Operationen, die vollständig vermieden werden sollten, da sie dazu führen, dass der Patch nicht angewendet werden kann.
-
Hinzufügen von Kontext- (" ") oder Entfernung- ("-") Zeilen
-
Löschen von Kontext- oder Entfernung-Zeilen
-
Ändern des Inhalts von Kontext- oder Entfernung-Zeilen
KONFIGURATION
Alles unterhalb dieser Zeile in diesem Abschnitt wird selektiv aus der git-config[1]-Dokumentation übernommen. Der Inhalt ist derselbe wie dort zu finden.
add.ignoreErrorsadd.ignore-errors(veraltet)-
Weist
gitaddan, mit dem Hinzufügen von Dateien fortzufahren, wenn einige Dateien aufgrund von Indexierungsfehlern nicht hinzugefügt werden können. Entspricht der Option--ignore-errors.add.ignore-errorsist veraltet, da es nicht der üblichen Namenskonvention für Konfigurationsvariablen folgt.
GIT
Teil der git[1] Suite