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.51.1 → 2.52.0 keine Änderungen
-
2.51.0
2025-08-18
- 2.47.1 → 2.50.1 keine Änderungen
-
2.47.0
2024-10-06
- 2.43.1 → 2.46.4 keine Änderungen
-
2.43.0
2023-11-20
- 2.40.1 → 2.42.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.32.1 → 2.34.8 keine Änderungen
-
2.32.0
2021-06-06
- 2.29.1 → 2.31.8 keine Änderungen
-
2.29.0
2020-10-19
- 2.19.1 → 2.28.1 keine Änderungen
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 keine Änderungen
-
2.18.0
2018-06-21
- 2.16.6 → 2.17.6 keine Änderungen
-
2.15.4
2019-12-06
- 2.14.6 keine Änderungen
-
2.13.7
2018-05-22
- 2.9.5 → 2.12.5 keine Änderungen
-
2.8.6
2017-07-30
- 2.5.6 → 2.7.6 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
git apply [--stat] [--numstat] [--summary] [--check] [--index | --intent-to-add] [--3way] [--ours | --theirs | --union] [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse] [--allow-binary-replacement | --binary] [--reject] [-z] [-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached] [--ignore-space-change | --ignore-whitespace] [--whitespace=(nowarn|warn|fix|error|error-all)] [--exclude=<path>] [--include=<path>] [--directory=<root>] [--verbose | --quiet] [--unsafe-paths] [--allow-empty] [<patch>…]
BESCHREIBUNG
Liest die bereitgestellte Diff-Ausgabe (d.h. "einen Patch") und wendet sie auf Dateien an. Wenn Sie von einem Unterverzeichnis in einem Repository aus arbeiten, werden Patch-Pfade außerhalb des Verzeichnisses ignoriert. Mit der Option --index wird der Patch auch auf den Index angewendet, und mit der Option --cached wird der Patch nur auf den Index angewendet. Ohne diese Optionen wendet der Befehl den Patch nur auf Dateien an und erfordert nicht, dass diese sich in einem Git-Repository befinden.
Dieser Befehl wendet den Patch an, erstellt aber keinen Commit. Verwenden Sie git-am[1], um Commits aus Patches zu erstellen, die von git-format-patch[1] generiert und/oder per E-Mail empfangen wurden.
OPTIONEN
- <patch>…
-
Die Dateien, aus denen der Patch gelesen werden soll. - kann verwendet werden, um von der Standardeingabe zu lesen.
- --stat
-
Anstatt den Patch anzuwenden, wird die Diff-Statistik für die Eingabe ausgegeben. Schaltet "anwenden" aus.
- --numstat
-
Ähnlich wie
--stat, zeigt aber die Anzahl der hinzugefügten und gelöschten Zeilen in Dezimalnotation und den Pfadnamen ohne Abkürzung an, um ihn maschinenfreundlicher zu gestalten. Für Binärdateien werden zwei-ausgegeben, anstatt00zu sagen. Schaltet "anwenden" aus. - --summary
-
Anstatt den Patch anzuwenden, wird eine kondensierte Zusammenfassung von Informationen ausgegeben, die aus erweiterten Git-Diff-Headern stammen, wie z. B. Erstellungen, Umbenennungen und Modusänderungen. Schaltet "anwenden" aus.
- --check
-
Anstatt den Patch anzuwenden, wird geprüft, ob der Patch auf den aktuellen Arbeitsbaum und/oder die Indexdatei anwendbar ist und Fehler erkannt. Schaltet "anwenden" aus.
- --index
-
Wendet den Patch sowohl auf den Index als auch auf den Arbeitsbaum an (oder prüft nur, ob er auf beide sauber angewendet werden könnte, wenn
--checkaktiv ist). Beachten Sie, dass--indexerwartet, dass die Indexeinträge und die Kopien im Arbeitsbaum für die relevanten Pfade identisch sind (ihre Inhalte und Metadaten wie Dateimodus müssen übereinstimmen) und gibt einen Fehler aus, wenn dies nicht der Fall ist, selbst wenn der Patch sowohl auf den Index als auch auf den Arbeitsbaum isoliert angewendet werden könnte. - --cached
-
Wendet den Patch nur auf den Index an, ohne den Arbeitsbaum zu berühren. Wenn
--checkaktiv ist, wird nur geprüft, ob er auf den Indexeintrag sauber angewendet werden könnte. - -N
- --intent-to-add
-
Beim Anwenden des Patches nur auf den Arbeitsbaum werden neue Dateien markiert, die später dem Index hinzugefügt werden sollen (siehe Option
--intent-to-addin git-add[1]). Diese Option wird ignoriert, wenn--indexoder--cachedverwendet werden, und hat außerhalb eines Git-Repositorys keine Auswirkung. Beachten Sie, dass--indexdurch andere Optionen wie--3wayimpliziert werden könnte. - -3
- --3way
-
Versucht einen 3-Wege-Merge, wenn der Patch die Identität von Blobs aufzeichnet, auf die er angewendet werden soll, und wir diese Blobs lokal verfügbar haben. Dies kann Konfliktmarker in den Dateien im Arbeitsbaum hinterlassen, die der Benutzer auflösen muss. Diese Option impliziert die Option
--index, es sei denn, die Option--cachedwird verwendet, und ist mit der Option--rejectinkompatibel. Bei Verwendung mit der Option--cachedwerden alle Konflikte auf höheren Stufen im Cache belassen. - --ours
- --theirs
- --union
-
Anstatt Konflikte in der Datei zu belassen, werden Konflikte so aufgelöst, dass die Zeilen von unserer (oder ihrer oder beiden) Seite bevorzugt werden. Erfordert --3way.
- --build-fake-ancestor=<file>
-
Neuere git diff-Ausgaben enthalten eingebettete Indexinformationen für jeden Blob, um die Originalversion zu identifizieren, auf die der Patch angewendet werden soll. Wenn diese Flagge gesetzt ist und die Originalversionen der Blobs lokal verfügbar sind, wird ein temporärer Index erstellt, der diese Blobs enthält.
Wenn ein reiner Moduswechsel (ohne Indexinformationen) angetroffen wird, werden die Informationen stattdessen aus dem aktuellen Index gelesen.
- -R
- --reverse
-
Wendet den Patch umgekehrt an.
- --reject
-
Aus Gründen der Atomarität schlägt git apply standardmäßig den gesamten Patch fehl und berührt den Arbeitsbaum nicht, wenn einige der Hunks nicht angewendet werden können. Diese Option bewirkt, dass die anwendbaren Teile des Patches angewendet und die abgelehnten Hunks in entsprechenden *.rej-Dateien hinterlassen werden.
- -z
-
Wenn
--numstatangegeben wurde, werden die Pfadnamen nicht verändert, sondern in einem NUL-terminierten, maschinenlesbaren Format ausgegeben.Ohne diese Option werden Pfadnamen mit "ungewöhnlichen" Zeichen gemäß der Beschreibung der Konfigurationsvariable
core.quotePath(siehe git-config[1]) maskiert. - -p<n>
-
Entfernt <n> führende Pfadkomponenten (getrennt durch Schrägstriche) von traditionellen Diff-Pfaden. Mit
-p2wird beispielsweise ein Patch gegena/dir/filedirekt auffileangewendet. Der Standardwert ist 1. - -C<n>
-
Stellt sicher, dass vor und nach jeder Änderung mindestens <n> Zeilen umgebenden Kontexts übereinstimmen. Wenn weniger Zeilen umgebenden Kontexts vorhanden sind, müssen alle übereinstimmen. Standardmäßig wird nie Kontext ignoriert.
- --unidiff-zero
-
Standardmäßig erwartet git apply, dass der anzuwendende Patch ein einheitlicher Diff mit mindestens einer Kontextzeile ist. Dies bietet gute Sicherheitsmaßnahmen, schlägt jedoch fehl, wenn ein mit
--unified=0generierter Diff angewendet wird. Um diese Prüfungen zu umgehen, verwenden Sie--unidiff-zero.Beachten Sie, dass aus den oben genannten Gründen die Verwendung von kontextfreien Patches nicht empfohlen wird.
- --apply
-
Wenn Sie eine der mit "Schaltet anwenden aus" gekennzeichneten Optionen verwenden, liest und gibt git apply die angeforderten Informationen aus, ohne den Patch tatsächlich anzuwenden. Geben Sie diese Flagge nach diesen Flaggen an, um den Patch ebenfalls anzuwenden.
- --no-add
-
Beim Anwenden eines Patches werden durch den Patch vorgenommene Hinzufügungen ignoriert. Dies kann verwendet werden, um den gemeinsamen Teil zwischen zwei Dateien zu extrahieren, indem Sie zuerst diff auf sie anwenden und das Ergebnis mit dieser Option anwenden, die den Löschteil, aber nicht den Hinzufügeteil anwendet.
- --allow-binary-replacement
- --binary
-
Historisch gesehen erlaubten wir die Anwendung von Binärpatches nicht ohne explizite Erlaubnis des Benutzers, und diese Flagge war der Weg, dies zu tun. Derzeit erlauben wir die Anwendung von Binärpatches immer, so dass dies eine No-Op ist.
- --exclude=<path-pattern>
-
Änderungen an Dateien, die dem gegebenen Pfadmuster entsprechen, nicht anwenden. Dies kann beim Importieren von Patchsets nützlich sein, wenn Sie bestimmte Dateien oder Verzeichnisse ausschließen möchten.
- --include=<path-pattern>
-
Änderungen an Dateien, die dem gegebenen Pfadmuster entsprechen, anwenden. Dies kann beim Importieren von Patchsets nützlich sein, wenn Sie bestimmte Dateien oder Verzeichnisse einschließen möchten.
Wenn
--excludeund--includeMuster verwendet werden, werden diese in der Reihenfolge auf der Kommandozeile geprüft, und die erste Übereinstimmung bestimmt, ob ein Patch für jeden Pfad verwendet wird. Ein Patch für einen Pfad, der keinem Include/Exclude-Muster entspricht, wird standardmäßig verwendet, wenn keine Include-Muster auf der Kommandozeile vorhanden sind, und ignoriert, wenn ein Include-Muster vorhanden ist. - --ignore-space-change
- --ignore-whitespace
-
Beim Anwenden eines Patches werden Änderungen am Leerzeichen in Kontextzeilen bei Bedarf ignoriert. Kontextzeilen behalten ihr Leerzeichen und werden unabhängig vom Wert der Option
--whitespacekeiner Leerzeichenkorrektur unterzogen. Neue Zeilen werden jedoch weiterhin korrigiert. - --whitespace=<action>
-
Beim Anwenden eines Patches werden neue oder geänderte Zeilen mit Leerzeichenfehlern erkannt. Was als Leerzeichenfehler gilt, wird durch die Konfiguration
core.whitespacegesteuert. Standardmäßig werden nachgestellte Leerzeichen (einschließlich Zeilen, die nur aus Leerzeichen bestehen) und ein Leerzeichen, dem unmittelbar ein Tabulatorzeichen folgt, im ursprünglichen Einzug der Zeile als Leerzeichenfehler betrachtet.Standardmäßig gibt der Befehl Warnmeldungen aus, wendet den Patch jedoch an. Wenn
git-applyfür Statistiken und nicht zum Anwenden eines Patches verwendet wird, lautet der Standardwertnowarn.Sie können verschiedene <action>-Werte verwenden, um dieses Verhalten zu steuern:
-
nowarnschaltet die Warnung für nachgestellte Leerzeichen aus. -
warngibt Warnungen für einige dieser Fehler aus, wendet den Patch aber unverändert an (Standard). -
fixgibt Warnungen für einige dieser Fehler aus und wendet den Patch nach der Korrektur an (stripist ein Synonym – das Werkzeug berücksichtigte nur nachgestellte Leerzeichen als Fehler, und die Korrektur beinhaltete deren Entfernung, aber moderne Git-Versionen machen mehr). -
errorgibt Warnungen für einige dieser Fehler aus und weigert sich, den Patch anzuwenden. -
error-allist ähnlich wieerror, zeigt aber alle Fehler an.
-
- --inaccurate-eof
-
Unter bestimmten Umständen erkennen einige Versionen von diff eine fehlende neue Zeile am Ende der Datei nicht korrekt. Infolgedessen zeichnen Patches, die von solchen diff-Programmen erstellt wurden, unvollständige Zeilen nicht korrekt auf. Diese Option unterstützt die Anwendung solcher Patches, indem sie diesen Fehler umgeht.
- -v
- --verbose
-
Meldet den Fortschritt an stderr. Standardmäßig wird nur eine Nachricht über den aktuell angewendeten Patch ausgegeben. Diese Option bewirkt, dass zusätzliche Informationen gemeldet werden.
- -q
- --quiet
-
Unterdrückt die Ausgabe an stderr. Meldungen über den Patch-Status und den Fortschritt werden nicht gedruckt.
- --recount
-
Vertrauen Sie nicht den Zeilenzählungen in den Hunk-Headern, sondern leiten Sie sie durch Inspektion des Patches ab (z.B. nach Bearbeitung des Patches, ohne die Hunk-Header entsprechend anzupassen).
- --directory=<root>
-
Fügt allen Dateinamen <root> voran. Wenn auch ein "-p"-Argument übergeben wurde, wird dieses vor dem Voranstellen des neuen Roots angewendet.
Zum Beispiel kann ein Patch, der die Aktualisierung von
a/git-gui.shzub/git-gui.shbetrifft, auf die Datei im Arbeitsbaummodules/git-gui/git-gui.shangewendet werden, indemgit apply --directory=modules/git-guiausgeführt wird. - --unsafe-paths
-
Standardmäßig wird ein Patch, der außerhalb des Arbeitsbereichs wirkt (entweder ein von Git kontrollierter Arbeitsbaum oder das aktuelle Arbeitsverzeichnis, wenn "git apply" als Ersatz für GNU patch verwendet wird), als Fehler (oder böswillige Handlung) abgelehnt.
Wenn
git applyals "besserer GNU patch" verwendet wird, kann der Benutzer die Option--unsafe-pathsübergeben, um diese Sicherheitsprüfung zu überschreiben. Diese Option hat keine Auswirkung, wenn--indexoder--cachedverwendet werden. - --allow-empty
-
Gibt keinen Fehler für Patches zurück, die keine Diff enthalten. Dazu gehören leere Patches und Patches nur mit Commit-Text.
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.
- apply.ignoreWhitespace
-
Wenn auf change gesetzt, weist dies git apply an, Änderungen am Leerzeichen zu ignorieren, ähnlich wie die Option
--ignore-space-change. Wenn auf eine der folgenden Optionen gesetzt: no, none, never, false, weist dies git apply an, alle Leerzeichenunterschiede zu respektieren. Siehe git-apply[1]. - apply.whitespace
-
Weist git apply an, wie mit Leerzeichen umzugehen ist, ähnlich wie die Option
--whitespace. Siehe git-apply[1].
SUBMODULES
Wenn der Patch Änderungen an Submodulen enthält, behandelt git apply diese Änderungen wie folgt:
Wenn --index angegeben ist (explizit oder implizit), müssen die Submodul-Commits exakt mit dem Index übereinstimmen, damit der Patch angewendet werden kann. Wenn eines der Submodule ausgecheckt ist, werden diese Auscheckvorgänge vollständig ignoriert, d.h. es wird nicht verlangt, dass sie aktuell oder sauber sind, und sie werden nicht aktualisiert.
Wenn --index nicht angegeben ist, werden die Submodul-Commits im Patch ignoriert und nur die An- oder Abwesenheit des entsprechenden Unterverzeichnisses geprüft und (falls möglich) aktualisiert.
GIT
Teil der git[1] Suite