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.50.1 → 2.51.2 keine Änderungen
-
2.50.0
2025-06-16
- 2.46.1 → 2.49.1 keine Änderungen
-
2.46.0
2024-07-29
- 2.45.1 → 2.45.4 keine Änderungen
-
2.45.0
2024-04-29
- 2.43.1 → 2.44.4 keine Änderungen
-
2.43.0
2023-11-20
- 2.42.2 → 2.42.4 keine Änderungen
-
2.42.1
2023-11-02
- 2.41.1 → 2.42.0 keine Änderungen
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 keine Änderungen
-
2.40.0
2023-03-12
- 2.38.1 → 2.39.5 keine Änderungen
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 keine Änderungen
-
2.35.0
2022-01-24
- 2.33.2 → 2.34.8 keine Änderungen
-
2.33.1
2021-10-12
- 2.32.1 → 2.33.0 keine Änderungen
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 keine Änderungen
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 keine Änderungen
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 keine Änderungen
-
2.27.0
2020-06-01
- 2.26.1 → 2.26.3 keine Änderungen
-
2.26.0
2020-03-22
- 2.25.1 → 2.25.5 keine Änderungen
-
2.25.0
2020-01-13
- 2.22.1 → 2.24.4 keine Änderungen
-
2.22.0
2019-06-07
- 2.17.1 → 2.21.4 keine Änderungen
-
2.17.0
2018-04-02
- 2.11.4 → 2.16.6 keine Änderungen
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.8.6 keine Änderungen
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.4.12 → 2.5.6 keine Änderungen
-
2.3.10
2015-09-28
- 2.2.3 keine Änderungen
- 2.1.4 keine Änderungen
-
2.0.5
2014-12-17
SYNOPSIS
git am [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8] [--no-verify] [--[no-]3way] [--interactive] [--committer-date-is-author-date] [--ignore-date] [--ignore-space-change | --ignore-whitespace] [--whitespace=<action>] [-C<n>] [-p<n>] [--directory=<dir>] [--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet] [--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>] [--quoted-cr=<action>] [--empty=(stop|drop|keep)] [(<mbox> | <Maildir>)…] git am (--continue | --skip | --abort | --quit | --retry | --show-current-patch[=(diff|raw)] | --allow-empty)
BESCHREIBUNG
Teilt Mail-Nachrichten in einer Mailbox in Commit-Log-Nachrichten, Autorenschaftsinformationen und Patches auf und wendet sie auf den aktuellen Branch an. Man kann sich das als umgekehrte Operation von git-format-patch[1] vorstellen, die auf einem Branch mit einer geraden Historie ohne Merges ausgeführt wurde.
OPTIONEN
- (<mbox>|<Maildir>)…
-
Die Liste der Mailbox-Dateien, aus denen Patches gelesen werden sollen. Wenn Sie dieses Argument nicht angeben, liest der Befehl von der Standardeingabe. Wenn Sie Verzeichnisse angeben, werden diese als Maildirs behandelt.
- -s
- --signoff
-
Fügt eine
Signed-off-by-Tabelle zur Commit-Nachricht hinzu, wobei die Committer-Identität von Ihnen selbst verwendet wird. Weitere Informationen finden Sie in der Option signoff in git-commit[1]. - -k
- --keep
-
Übergibt das Flag
-kan git mailinfo (siehe git-mailinfo[1]). - --keep-non-patch
-
Übergibt das Flag
-ban git mailinfo (siehe git-mailinfo[1]). - --keep-cr
- --no-keep-cr
-
Mit
--keep-crwird git mailsplit (siehe git-mailsplit[1]) mit derselben Option aufgerufen, um zu verhindern, dass CR am Ende von Zeilen gestrippt wird. Die Konfigurationsvariableam.keepcrkann verwendet werden, um das Standardverhalten festzulegen.--no-keep-crist nützlich, umam.keepcrzu überschreiben. - -c
- --scissors
-
Entfernt alles im Body vor einer "scissors"-Zeile (siehe git-mailinfo[1]). Kann standardmäßig durch die Konfigurationsvariable
mailinfo.scissorsaktiviert werden. - --no-scissors
-
Ignoriert "scissors"-Zeilen (siehe git-mailinfo[1]).
- --quoted-cr=<aktion>
-
Dieses Flag wird an git mailinfo weitergegeben (siehe git-mailinfo[1]).
- --empty=(drop|keep|stop)
-
Umgang mit einer E-Mail-Nachricht ohne Patch
- -m
- --message-id
-
Übergibt das Flag
-man git mailinfo (siehe git-mailinfo[1]), sodass der Message-ID-Header zur Commit-Nachricht hinzugefügt wird. Die Konfigurationsvariableam.messageidkann verwendet werden, um das Standardverhalten festzulegen. - --no-message-id
-
Fügt den Message-ID-Header nicht zur Commit-Nachricht hinzu.
no-message-idist nützlich, umam.messageidzu überschreiben. - -q
- --quiet
-
Sei leise. Gib nur Fehlermeldungen aus.
- -u
- --utf8
-
Übergibt das Flag
-uan git mailinfo (siehe git-mailinfo[1]). Die vorgeschlagene Commit-Log-Nachricht aus der E-Mail wird in UTF-8-Kodierung neu kodiert (die Konfigurationsvariablei18n.commitEncodingkann verwendet werden, um die bevorzugte Kodierung des Projekts festzulegen, falls diese nicht UTF-8 ist).Dies war in früheren Versionen von git optional, ist aber jetzt der Standard. Sie können
--no-utf8verwenden, um dies zu überschreiben. - --no-utf8
-
Übergibt das Flag
-nan git mailinfo (siehe git-mailinfo[1]). - -3
- --3way
- --no-3way
-
Wenn der Patch nicht sauber angewendet werden kann, greift das Programm auf einen 3-Wege-Merge zurück, falls der Patch die Identität der Blobs aufzeichnet, auf die er angewendet werden soll, und wir diese Blobs lokal verfügbar haben.
--no-3waykann verwendet werden, um die Konfigurationsvariable am.threeWay zu überschreiben. Weitere Informationen finden Sie unter am.threeWay in git-config[1]. --rerere-autoupdate--no-rerere-autoupdate-
Nachdem der rerere-Mechanismus eine aufgezeichnete Auflösung für den aktuellen Konflikt wiederverwendet hat, um die Dateien im Arbeitsbaum zu aktualisieren, erlauben Sie ihm auch, den Index mit dem Ergebnis der Auflösung zu aktualisieren.
--no-rerere-autoupdateist eine gute Möglichkeit, zu überprüfen, wasrereregetan hat, und potenzielle Fehlmerges zu erkennen, bevor das Ergebnis mit einem separatengitaddin den Index übernommen wird. - --ignore-space-change
- --ignore-whitespace
- --whitespace=<aktion>
- -C<n>
- -p<n>
- --directory=<dir>
- --exclude=<pfad>
- --include=<pfad>
- --reject
-
Diese Flags werden an das Programm git apply (siehe git-apply[1]) übergeben, das den Patch anwendet.
Gültige <aktion> für die Option
--whitespacesind:nowarn,warn,fix,errorunderror-all. - --patch-format
-
Standardmäßig versucht der Befehl, das Patch-Format automatisch zu erkennen. Diese Option ermöglicht es dem Benutzer, die automatische Erkennung zu umgehen und das Patch-Format anzugeben, als das die Patches interpretiert werden sollen. Gültige Formate sind mbox, mboxrd, stgit, stgit-series und hg.
- -i
- --interactive
-
Interaktiv ausführen.
- -n
- --no-verify
-
Standardmäßig werden die Hooks pre-applypatch und applypatch-msg ausgeführt. Wenn einer von
--no-verifyoder-nangegeben wird, werden diese umgangen. Siehe auch githooks[5]. - --committer-date-is-author-date
-
Standardmäßig zeichnet der Befehl das Datum aus der E-Mail-Nachricht als Commit-Autoren-Datum auf und verwendet die Zeit der Commit-Erstellung als Committer-Datum. Dies ermöglicht es dem Benutzer, über das Committer-Datum zu lügen, indem derselbe Wert wie das Autoren-Datum verwendet wird.
- --ignore-date
-
Standardmäßig zeichnet der Befehl das Datum aus der E-Mail-Nachricht als Commit-Autoren-Datum auf und verwendet die Zeit der Commit-Erstellung als Committer-Datum. Dies ermöglicht es dem Benutzer, über das Autoren-Datum zu lügen, indem derselbe Wert wie das Committer-Datum verwendet wird.
- --skip
-
Überspringt den aktuellen Patch. Dies ist nur sinnvoll, wenn ein abgebrochener Patch neu gestartet wird.
- -S[<keyid>]
- --gpg-sign[=<keyid>]
- --no-gpg-sign
-
GPG-sign Commits. Das Argument
keyidist optional und standardmäßig die Committer-Identität; wenn es angegeben wird, muss es ohne Leerzeichen an die Option angehängt werden.--no-gpg-signist nützlich, um sowohl die Konfigurationsvariablecommit.gpgSignals auch einen früheren Befehl--gpg-signzu überschreiben. - --continue
- -r
- --resolved
-
Nach einem Patch-Fehler (z. B. einem Versuch, einen widersprüchlichen Patch anzuwenden) hat der Benutzer ihn manuell angewendet und die Indexdatei speichert das Ergebnis der Anwendung. Erstellt einen Commit unter Verwendung der Autorenschaft und des Commit-Logs, die aus der E-Mail-Nachricht extrahiert wurden, sowie der aktuellen Indexdatei und fährt fort.
- --resolvemsg=<msg>
-
Wenn ein Patch-Fehler auftritt, wird <msg> vor dem Beenden auf dem Bildschirm ausgegeben. Dies überschreibt die Standardnachricht, die Sie auffordert,
--continueoder--skipzu verwenden, um den Fehler zu behandeln. Dies ist ausschließlich für die interne Verwendung zwischen git rebase und git am bestimmt. - --abort
-
Stellt den ursprünglichen Branch wieder her und bricht die Patch-Operation ab. Stellt den Inhalt der Dateien, die an der am-Operation beteiligt waren, in ihren Zustand vor am zurück.
- --quit
-
Bricht die Patch-Operation ab, behält aber HEAD und den Index unverändert bei.
- --retry
-
Versucht, den letzten widersprüchlichen Patch erneut anzuwenden. Dies ist im Allgemeinen nur nützlich, um zusätzliche Optionen an den Wiederholungsversuch zu übergeben (z. B.
--3way), da Sie sonst denselben Fehler wieder sehen würden. - --show-current-patch[=(diff|raw)]
-
Zeigt die Nachricht an, bei der
gitamaufgrund von Konflikten gestoppt ist. Wennrawangegeben ist, wird der Rohinhalt der E-Mail-Nachricht angezeigt; wenndiff, wird nur der Diff-Teil angezeigt. Standardmäßig wirdrawverwendet. - --allow-empty
-
Nach einem Patch-Fehler bei einer Eingabe-E-Mail-Nachricht ohne Patch wird ein leerer Commit mit dem Inhalt der E-Mail-Nachricht als Log-Nachricht erstellt.
DISKUSSION
Der Commit-Autor-Name wird aus der "From: "-Zeile der Nachricht entnommen, und das Commit-Autor-Datum aus der "Date: "-Zeile der Nachricht. Die "Subject: "-Zeile wird als Titel des Commits verwendet, nachdem gängige Präfixe "[PATCH <beliebig>]" entfernt wurden. Die "Subject: "-Zeile soll kurz beschreiben, worum es in dem Commit geht, in einer Textzeile.
"From: ", "Date: " und "Subject: "-Zeilen am Anfang des Body überschreiben die jeweiligen Commit-Autor-Namen und Titelwerte, die aus den Headern übernommen wurden.
Die Commit-Nachricht besteht aus dem Titel aus dem "Subject: ", einer Leerzeile und dem Body der Nachricht bis zum Beginn des Patches. Überflüssige Leerzeichen am Ende jeder Zeile werden automatisch entfernt.
Der Patch wird inline erwartet, direkt nach der Nachricht. Jede Zeile, die wie folgt aussieht:
-
drei Bindestriche und Zeilenende, oder
-
eine Zeile, die mit "diff -" beginnt, oder
-
eine Zeile, die mit "Index: " beginnt,
wird als Beginn eines Patches betrachtet, und die Commit-Log-Nachricht wird vor dem ersten Vorkommen einer solchen Zeile beendet.
Bei der anfänglichen Ausführung von git am geben Sie die Namen der zu verarbeitenden Mailboxen an. Beim Auftreten des ersten Patches, der nicht angewendet werden kann, bricht er mitten in der Ausführung ab. Sie können dies auf eine von zwei Arten beheben:
-
Überspringen Sie den aktuellen Patch, indem Sie den Befehl mit der Option
--skiperneut ausführen. -
Lösen Sie den Konflikt im Arbeitsverzeichnis manuell und aktualisieren Sie die Indexdatei, um sie in einen Zustand zu bringen, den der Patch hätte erzeugen sollen. Führen Sie dann den Befehl mit der Option
--continueaus.
Der Befehl weigert sich, neue Mailboxen zu verarbeiten, bis die aktuelle Operation abgeschlossen ist. Wenn Sie sich also entscheiden, von vorne zu beginnen, führen Sie git am --abort aus, bevor Sie den Befehl mit den Mailbox-Namen ausführen.
Bevor Patches angewendet werden, wird ORIG_HEAD auf die Spitze des aktuellen Branches gesetzt. Dies ist nützlich, wenn Sie Probleme mit mehreren Commits haben, z. B. wenn Sie git am auf dem falschen Branch ausführen oder ein Fehler in den Commits vorliegt, der leichter durch Ändern der Mailbox behoben werden kann (z. B. Fehler in den "From:"-Zeilen).
HOOKS
Dieser Befehl kann die Hooks applypatch-msg, pre-applypatch und post-applypatch ausführen. Weitere Informationen finden Sie unter githooks[5].
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.
- am.keepcr
-
Wenn true, ruft git-am git-mailsplit für Patches im mbox-Format mit dem Parameter
--keep-crauf. In diesem Fall entfernt git-mailsplit kein \r von Zeilen, die mit \r\n enden. Kann durch Angabe von--no-keep-crvon der Kommandozeile aus überschrieben werden. Siehe git-am[1], git-mailsplit[1]. - am.threeWay
-
Standardmäßig schlägt
gitamfehl, wenn der Patch nicht sauber angewendet werden kann. Wenn dieser Wert auf true gesetzt ist, weist diesgitaman, auf einen 3-Wege-Merge zurückzugreifen, wenn der Patch die Identität der Blobs aufzeichnet, auf die er angewendet werden soll, und wir diese Blobs lokal verfügbar haben (entspricht der Angabe der Option--3wayvon der Kommandozeile aus). Standardmäßig ist diesfalse. Siehe git-am[1].
GIT
Teil der git[1] Suite