Der git diff
Befehl akzeptiert optionale Werte für --stat
:
--stat[=<width>[,<name-width>[,<count>]]]
Generate a diffstat. You can override the default output width for
80-column terminal by --stat=<width>. The width of the filename
part can be controlled by giving another width to it separated by a
comma. By giving a third parameter <count>, you can limit the
output to the first <count> lines, followed by ... if there are
more.
These parameters can also be set individually with
--stat-width=<width>, --stat-name-width=<name-width> and
--stat-count=<count>.
(Für Scripting Sie könnten verwenden mögen git diff-tree
direkt , da es eher einen „Sanitär“ Befehl ist, obwohl ich vermute , dass Sie sich gut gehen oder so. Beachten Sie, dass Sie den gleichen zusätzlichen Text mit müssen --stat
bei der Verwendung git diff-tree
. Den wesentlichen Unterschied zwischen der Verwendung von git diff
„Porzellan "Front-End und der git diff-tree
Installationsbefehl git diff
suchen in Ihren konfigurierten Einstellungen nach Optionen, diff.renames
mit denen Sie entscheiden können, ob Sie eine Umbenennungserkennung durchführen möchten. Nun, das und das Front-End git diff
entsprechen dem Vergleich, git diff-index
wenn Sie ein Commit mit dem Index vergleichen Mit anderen Worten, git diff
liest Ihre Konfiguration und ruft automatisch die richtige Installation auf .)
--stat-graph-width=...
Schalter verwenden können, um die Breite des letzten Teils (+++ / ---) zu begrenzen . Beachten Sie auch, dass die Einstellung hoch--stat-graph-width=
und--stat-name-width=
nicht ausreichend ist. Sie müssen auch--stat-width=
groß genug einstellen , um die beiden abzudecken.diff.statGraphWidth
Sie den--stat-graph-width
Wert festlegen können, aber die anderen verwenden standardmäßig Ihre Terminalbreite. (Also, alternative Antwort: "Ja, machen Sie einfach Ihr Terminalfenster 1000 Spalten breit" :-))Für die Skriptverarbeitung ist es möglicherweise besser, eine der folgenden Optionen zu verwenden:
Diese sind in Kombination mit der
-z
Option, dieNUL
als Feldterminatoren verwendet wird, für eine robuste Skriptverarbeitung praktischer .quelle
git rev-parse --show-toplevel
. Das ursprüngliche Problem bezog sich auf abgeschnittene Pfade, was bei diffstats ein Problem darstellt, insbesondere bei langen Dateinamen oder einem niedrigen Wert für--stat-name-width
. Mit den obigen Befehlen werden die Pfade nicht abgeschnitten, sondern der angeforderte "vollständige" Pfad angezeigt, wenn auch immer noch relativ zum Repository-Stammverzeichnis.Für Bash-Benutzer können Sie die
$COLUMNS
Variable verwenden, um die verfügbare Terminalbreite automatisch zu füllen:Sehr lange Pfadnamen werden möglicherweise immer noch abgeschnitten. In diesem Fall können Sie die Breite des +++ / --- Teils reduzieren, indem Sie ihn
--stat-graph-width
beispielsweise auf 1/5 der Terminalbreite beschränken:Für eine allgemeinere Lösung können Sie die Ausgabe von verwenden
tput cols
, um die Terminalbreite zu bestimmen.quelle
--stat=$COLUMNS,$COLUMNS
? Es ist verrückt, es jedes Mal zu tippen.export COLUMNS
zu Ihrem~/.bashrc
, und in Ihrem~/.gitconfig
unter[alias]
hinzufügensmart-diff = ! "gitsmartdiff() { git diff $2 --stat=$COLUMNS,$COLUMNS; }; gitsmartdiff"
diff
. Ich möchte, dass es auch für Merges und Pulls usw. funktioniert. (Kann es dort nicht einmal manuell machen.) Ich glaube nicht, dass GIT es unterstützt.Es gibt eine Option
--name-only
:git diff --name-only
. Die Option wird auch von anderen Git-Befehlen wieshow
und unterstütztstash
.Pfade werden mit dieser Option nicht verkürzt.
quelle
Ich habe den folgenden Git-Alias erstellt:
Es liest die Spaltenanzahl aus dem
tput cols
Befehl. Standardmäßig unterscheidet es sich vonmaster
, aber Sie können optional einen anderen Zweig angeben.quelle
Eine einfache Lösung, die ich gefunden habe, war dies: (funktioniert nur unter * nix, sorry no osx)
Diese Version funktioniert für beide, sieht aber unter osx nicht gut aus.
quelle
Ich habe festgestellt, dass sich das Verhalten von diff - stat irgendwo um Git 1.7.10 herum geändert hat, wo zuvor Dateipfade standardmäßig auf eine feste Breite gekürzt wurden - es wird jetzt so viel angezeigt, wie Ihr Terminalfenster zulässt. Wenn dieses Problem auftritt, stellen Sie sicher, dass Sie ein Upgrade auf 1.8.0 oder neuer durchführen.
quelle