Übersicht
patch ist ein Dienstprogramm, das die Ausgabedatei (auch Patch-Datei genannt), die mit dem diff-Befehl erstellt wurde, liest und Änderungen auf die Originaldatei anwendet. Diese Patch-Datei zeichnet in der Regel zeilenweise auf, welche Inhalte hinzugefügt, gelöscht oder geändert wurden. Der patch-Befehl ändert die Originaldatei basierend auf diesen Informationen. Vor dem Aufkommen von Versionskontrollsystemen (wie CVS, Git usw.) war dies die primäre Methode zum Teilen von Codeänderungen.
Hauptmerkmale
Die Hauptmerkmale des patch-Befehls sind:
- Verwendet Patch-Dateien, die mit dem diff-Befehl erstellt wurden.
- Weit verbreitet für Quellcode-Updates, Konfigurationsdateien und mehr.
- Kann einige Änderungen erkennen und anwenden, auch wenn die Originaldatei nicht exakt mit der Patch-Datei übereinstimmt.
- Bietet auch eine Funktion zum Rückgängigmachen (reverse) von Änderungen.
Wichtige Optionen
Häufig verwendete Optionen des patch-Befehls, gruppiert nach Zweck.
1) Patch anwenden und rückgängig machen
2) Hilfe
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`patch` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Lernen Sie die Funktionen des patch-Befehls durch verschiedene Anwendungsbeispiele kennen.
Patch-Datei anwenden
patch -p1 -i my_changes.patch
Wendet Änderungen auf die Originaldatei an, indem die Datei my_changes.patch verwendet wird. Die Option `-p1` ignoriert den ersten Verzeichnispfad in der Patch-Datei.
Änderungen rückgängig machen
patch -p1 -R -i my_changes.patch
Macht die angewendeten Patch-Inhalte mit der Option `-R` rückgängig. Wird verwendet, um die Patch-Datei in ihren ursprünglichen Zustand zurückzusetzen.
Patch über Pipe anwenden
diff -u original_file.txt new_file.txt | patch -p0 original_file.txt
Leitet die Ausgabe des diff-Befehls direkt über eine Pipe (`|`) an den patch-Befehl weiter, um den Patch direkt anzuwenden, ohne eine Patch-Datei zu erstellen.
Vorschau der Patch-Anwendung
patch --dry-run -p1 -i my_changes.patch
Verwenden Sie die Option `--dry-run`, um eine Vorschau der Änderungen zu erhalten, die bei der Anwendung des Patches auftreten würden.
Installation
patch ist in den meisten Linux-Distributionen standardmäßig enthalten. Falls das Paket nicht vorhanden ist, können Sie das `patch`- oder `diffutils`-Paket wie folgt installieren:
Debian/Ubuntu
sudo apt update && sudo apt install -y patch
RHEL/CentOS/Fedora
sudo dnf install -y patch
Arch Linux
sudo pacman -S --needed patch
Tipps & Hinweise
Wichtige Punkte bei der Verwendung des patch-Befehls.
Tipps
- Das mit `diff -u` erzeugte vereinheitlichte (unified) Format ist das gängigste Patch-Format. Die Verwendung dieses Formats erhöht die Erfolgsrate der Patch-Anwendung.
- Die Option `-p` ist sehr wichtig, um Pfadinformationen in der Patch-Datei zu ignorieren. Sie müssen die Kopfzeile der Patch-Datei überprüfen, um die richtige Ebene anzugeben. Wenn der Pfad beispielsweise `a/src/file.c` lautet, wird bei Verwendung von `-p1` der Patch auf `src/file.c` angewendet.
- Wenn die Patch-Anwendung fehlschlägt, wird eine Datei mit der Erweiterung `.rej` erstellt. Diese Datei enthält die fehlgeschlagenen Teile des Patches und kann als Referenz für manuelle Korrekturen verwendet werden.
- Es wird empfohlen, vor dem Anwenden eines Patches eine Sicherungskopie der Originaldatei zu erstellen.