Wie erstelle ich einen Patch, der für die Überprüfung im Tiegel geeignet ist?
git diff branch master --no-prefix > patch
Dies erzeugt nur 3 Kontextzeilen. Also mache ich folgendes
git diff --unified=2000 branch master --no-prefix > patch
Hoffentlich haben alle Dateien weniger als 2000 Zeilen. Gibt es eine Möglichkeit, git anzuweisen, alle Zeilen in die Datei für den Patch aufzunehmen, ohne maximale Zeilen angeben zu müssen?
Antworten:
Ich weiß, dass dies alt ist, aber ich mag auch keine hartcodierten Lösungen, deshalb habe ich Folgendes getestet:
Die Verwendung von -U scheint der einzige Weg zu sein, um das Problem anzugehen, aber die Verwendung einer Zeilenanzahl verspricht, dass es auch für eine kleine Änderung in einer sehr großen Datei funktioniert.
quelle
<
ist nicht nötig.git diff -U$(wc -l MYFILE) MYFILE
git diff -U$(wc -l MYFILE | awk '{print $1}') MYFILE
ist eine bessere Antwort, die die Ausgabe korrekt analysiert,wc
indem nur die Anzahl der Zeilen ohne Leerzeichen abgerufen wird, ohne sich auf die nicht zitierte Ausgabe einer Unterschale zu verlassen, um zwei Argumente zu erstellen, und unter macOS / BSD funktioniert.Das scheint ganz gut zu funktionieren:
Mit dem Vorbehalt:
quelle
-U
Ihnen vorgeschlagene--unified=
Option entspricht der vom Fragesteller verwendeten Option. Der einzige Unterschied besteht darin, dass Sie weniger Kontextzeilen (1000) angeben als der verwendete Fragesteller (2000). @Balki wollte wissen, wie die Zahl auf unendlich erhöht werden kann, aber Sie schlagen vor, die Zahl zu halbieren. Warum?git show
!--no-prefix
Option werden die standardmäßig angezeigten Zielpräfixe "/ a /" und "/ b /" entfernt. (verlinkte Seite)Hinweis: Die Ankündigung von git1.8.1rc1 (8. Dezember 2012) enthält:
Dies könnte hier helfen, einen vollständigeren Kontext zu generieren.
quelle
Ich habe mich inspirieren lassen und deshalb habe ich einen Git-Alias hinzugefügt.
Aktualisieren:
Gerade gefunden "git df" funktioniert manchmal nicht, da das Verzeichnis beim Ausführen des Git-Alias geändert wurde. (Siehe Git-Aliase arbeiten im falschen Verzeichnis ). Das ist also die aktualisierte Version:
quelle
Dies funktionierte für mich unter macOS:
Siehe "Wie schneide ich Leerzeichen aus einer Bash-Variablen?"
quelle
Zuvor akzeptierte Lösungen funktionieren bei mir nicht, wenn eine bestimmte Datei / ein bestimmtes Commit angezeigt wird (die
-U
Option scheint mit der Analyse von Revisionen / Pfaden in Konflikt zu geraten),--inter-hunk-context=
funktioniert jedoch in diesem Fall unter folgenden Bedingungengit version 2.24.0
:Wenn Sie die Dateigröße nicht kennen, können Sie sie natürlich finden,
wc -l
anstatt sie fest zu codieren:quelle