2017-07-27 2 views
1

Ich wollte wissen, ob es möglich ist, Patch-Dateien in Git zu erstellen. Ich meine, wenn ich einige Änderungen in einigen Dateien vorgenommen habe, dann sollte Patch-Datei in Bezug auf den Dateinamen erstellt werden.Erstellen von Patch-Dateien in Git

git diff zeigt die Änderungen auf der Konsole aber Ist es möglich, die Ausgabe in verschiedene Dateien zu trennen?

+0

Was meinst du zu begrenzte Daten? Auf diese Art erstelle ich normalerweise einen Patch oder git diff master> filename.patch. Wenn Sie es patchen, müssen Sie den ersten Teil des Pfades mit dem Patch -p1 dj2

+0

Sorry my bad @ dj2 Es speichert erfolgreich in einzelne Datei aber kann es in verschiedenen Dateien gespeichert werden. Wenn zB Datei1 und Datei2 geändert wurden, können Datei1.Patch und Datei2.Patch für dasselbe erstellt werden. – BeginnersSake

+0

Warum möchten Sie den Patch in einzelne Dateien aufteilen? –

Antwort

3

git format-patch

Sagen Sie bitte ein aaa111 begehen gemacht haben, die foo.txt, bar.txt und hello.txt modifiziert.

git format-patch -1 aaa111

Es erzeugt einen Patch mit drei Dateien Änderungen.

git format-patch -1 aaa111 -- foo.txt

Es erzeugt ein Patch, das nur die Änderung des foo.txt.

git format-patch -1 aaa111 --stdout -- bar.txt > aaa111.bar.patch

Es erzeugt ein als aaa111.bar.patch namens Patch, der auf dem neuesten schafft Patches für die (HEAD~1) verpflichten geänderten Dateien nur die Änderung von bar.txt

+0

Danke @ElpieKay Es hat funktioniert. – BeginnersSake

+1

@ElpieKay Kannst du bitte erklären, wofür '-1' steht (und was es macht)? Ich habe 'git format-patch -h' überprüft, aber das ist nicht aufgelistet. Außerdem, wenn ich was für Patches für die letzten 3 commits, jedes in einer Datei commit, was soll ich tun? Danke. – xpt

+2

@xpt '-h' listet nur einige Optionen auf. Verwenden Sie stattdessen "git format-patch --help" oder "man git format-patch". '-1' ist eine Instanz von' - ', die" Patches von den obersten commits vorbereitet ". Ohne '-1' erzeugt es Patches für jedes Commit, das von' aaa111' erreichbar ist. Mit '-1' wird nur das Patch von' aaa111' erstellt. Mit 'git format-patch -3' werden Patches für die letzten 3 Commits erstellt. Beachten Sie, dass '- ' sich von '-n' unterscheidet. Beide sind verfügbare Optionen für 'git format-patch'. – ElpieKay

1

Das folgende Skript enthält:

# Enumerate the files modified on the desired commit 
for file in $(git diff --name-only HEAD~1); do 
    # Generate the name of the patch file: replac '/' with '_' 
    # in the paths of the modified files and add the .patch termination 
    patch=${file//\//_}.patch 
    # Create one patch for each modified file 
    git diff HEAD~1 -- $file > $patch 
done 

Sie können die Generierung des Patchdateinamens so ändern, dass er einen Pfad enthält (um sie nicht im aktuellen Verzeichnis zu generieren). Um auch einen Unterschied zwischen verschiedenen Commits zu generieren, ersetzen Sie HEAD~1 an beiden Stellen durch die entsprechenden Commit (s) -Kennungen.

Verwandte Themen