2012-03-30 2 views
26

Lassen Sie uns sagen, dass ich 7 commits vor dem Ursprung/Master Repo bin. Ich möchte einen Patch erstellen, der in dem Patch bestimmte Dateien enthält, die geändert wurden, nicht alle Dateien. Oder Äquivalente schließen bestimmte Dateien aus dem Patch aus, die geändert wurden. Wie kann ich das erreichen?Erstellen Sie einen Patch mit spezifischen Dateien in Git

Antwort

36

Sie können die Ausgabe von git diff einschränken, indem Sie Pfade am Ende des Befehls auflisten (nach einem --, um mögliche Konflikte zwischen Pfadnamen und Zweignamen zu vermeiden). Zum Beispiel könnten Sie Folgendes tun:

git diff origin/master HEAD -- app/models/region.rb doc/ > changes.patch 

... um einen Patch zu erzeugen, die nur die Unterschiede innerhalb einer bestimmten Datei zeigt und ein bestimmtes Verzeichnis.

19

Sie können Dateien in den Patches sind mit:

git format-patch <rev> <files...> 

Beispiel

git format-patch HEAD^^^ Makefile 

Werden Sie drei Dateien geben 0001- [verpflichten] ... 0003- [verpflichten] nur enthält das Makefile .

+2

Funktioniert das wirklich? Format-Patch-Dokumentation besagt nicht, dass Sie bestimmte Dateien als Parameter angeben können. –

+1

Es funktionierte für mich, obwohl ich keine Referenz dieses Features in den Dokumenten gefunden habe. –

+0

Ich konnte auch keine Dokumentation dieser Funktion finden. Hoffte, die Optionen für die Verwendung in einem Skript besser zu verstehen! –

Verwandte Themen