Patch ist ein Unix-Programm, das Textdateien gemäß den Anweisungen in einer separaten Datei aktualisiert, die als Patch-Datei bezeichnet wird.
Mit anderen Worten kann es sich also um die Datei mit Anweisungen oder ein Programm handeln, das diese Datei verarbeitet und auf etwas anwendet.
Was ist eine Patch-Datei? Angenommen, Sie haben eine Textdatei mit 2 Zeilen:
This is line A.
This is line B, or otherwise #2.
Dann ändern Sie die erste Zeile und jetzt sieht Ihre Datei folgendermaßen aus:
This is SPARTA.
This is line B, or otherwise #2.
Wie würden Sie die Änderung des Inhalts der Datei beschreiben? Sie können sagen, dass die erste Zeile "Dies ist Zeile A." wurde durch "Dies ist SPARTA." ersetzt, oder sogar das letzte Wort "A" der ersten Zeile wurde durch ein anderes Wort "SPARTA" ersetzt. Und genau das sagt uns diff . Angenommen, ich habe zwei Versionen dieser Datei, eine mit dem Namen file1.txt und eine mit dem Namen file2.txt. Dann führe ich diff aus und erhalte Folgendes:
$ diff -u file1.txt file2.txt
--- file1.txt 2011-11-26 11:07:03.131010360 -0500
+++ file2.txt 2011-11-26 11:07:13.171010362 -0500
@@ -1,2 +1,2 @@
-This is line A.
+This is SPARTA.
This is line B, or otherwise #2.
Wenn Sie eine Beschreibung der Änderungen haben, können Sie diese auf einen ursprünglichen Inhalt anwenden und einen geänderten Inhalt erhalten. Und diese Änderungen, die in einem einheitlichen Format vorliegen, das "Patch" -ähnliche Programme verstehen können, werden als Patch-Datei bezeichnet. Es ist so, als würde man keinen Fisch von jemandem bekommen, der Ihnen das Fischen beibringt, damit Sie diesen Fisch selbst aus dem Wasser graben können. Wenden wir nun unseren Patch auf file1.txt an, damit er genau wie file2.txt aussieht:
$ cat file1.txt
This is line A.
This is line B, or otherwise #2.
$ cat file2.txt
This is SPARTA.
This is line B, or otherwise #2.
$ diff -u file1.txt file2.txt > changes.patch
$ cat changes.patch
--- file1.txt 2011-11-26 11:09:38.651010370 -0500
+++ file2.txt 2011-11-26 11:07:13.171010362 -0500
@@ -1,2 +1,2 @@
-This is line A.
+This is SPARTA.
This is line B, or otherwise #2.
$ patch < changes.patch
patching file file1.txt
$ cat file1.txt
This is SPARTA.
This is line B, or otherwise #2.
$
Sie denken vielleicht, dass es einfacher ist, nur zwei Versionen dieser Datei zu haben. Nun, in diesem einfachen Fall ist das wahr. Wenn Sie jedoch viele Dateien haben und diese Dateien sehr groß sind, ist es viel effizienter, ein paar Zeilen Änderungen vorzunehmen, als zwei Kopien des Ganzen.
Wenn es um Git geht, bedeutet Patch-Datei immer noch dasselbe, aber die Verwendung von Diff + Patch selbst wäre ein Albtraum. Beispielsweise müssen Sie immer zwei Versionen der Datei (oder sogar des gesamten Repositorys) auschecken lassen, um sie vergleichen zu können. Klingt nicht so gut, oder? Git kümmert sich also um die ganze harte Arbeit für Sie - es vergleicht Ihre lokale Datei mit dem, was sich in dem Repository befindet, mit dem Sie arbeiten, und kann es Ihnen als "Diff" anzeigen oder dieses "Diff" als "Diff" anwenden Patch aka Übernehmen Sie Ihre Änderungen oder lassen Sie sogar eine Patch-Datei anwenden, die Sie bereits haben. In diesem Sinne ist Git absolut dasselbe wie andere Versionskontrollsysteme wie SVN oder sogar CVS oder Perforce.
Ich hoffe es hilft!