La git diff
commande prend des valeurs facultatives pour --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>.
(Pour le script, vous voudrez peut-être utiliser git diff-tree
directement car il s'agit plus d'une commande de "plomberie", même si je pense que tout ira bien dans les deux cas. Notez que vous avez besoin du même texte supplémentaire --stat
lors de l'utilisation git diff-tree
. La différence essentielle entre l'utilisation de la git diff
"porcelaine" "front-end, et la git diff-tree
commande de plomberie, est qui git diff
recherche vos paramètres configurés pour des options telles que diff.renames
décider de faire ou non la détection de changement de nom. Eh bien, plus le front-end git diff
fera l'équivalent de git diff-index
si vous comparez un commit avec l'index , par exemple. En d'autres termes, git diff
lit votre configuration et invoque automatiquement la bonne plomberie .)
--stat-graph-width=...
commutateur séparé . Notez également que le réglage haut--stat-graph-width=
et--stat-name-width=
ne suffit pas, vous devez également régler--stat-width=
suffisamment grand pour couvrir les deux.diff.statGraphWidth
vous pouvez utiliser pour définir la--stat-graph-width
valeur, mais les autres par défaut sont la largeur de votre terminal. (Donc, réponse alternative: "oui, faites simplement votre fenêtre de terminal de 1000 colonnes de large" :-))Pour le traitement des scripts, il peut être préférable d'utiliser l'un des éléments suivants:
Celles-ci deviennent plus pratiques pour un traitement de script robuste lorsqu'elles sont combinées avec l'
-z
option, qui utiliseNUL
comme terminateurs de champ.la source
git rev-parse --show-toplevel
. Le problème d'origine faisait référence aux chemins tronqués, ce qui est un problème dans les diffstats, en particulier pour les noms de fichiers longs ou une valeur faible pour--stat-name-width
. Les commandes ci-dessus ne tronqueront pas les chemins, mais afficheront le chemin "complet" comme demandé, bien que toujours relatif à la racine du référentiel.Pour les utilisateurs de Bash, vous pouvez utiliser la
$COLUMNS
variable pour remplir automatiquement la largeur de borne disponible:Les noms de chemin très longs peuvent encore être tronqués; dans ce cas, vous pouvez réduire la largeur de la pièce +++ / --- en utilisant
--stat-graph-width
, par exemple cela la limite à 1/5 de la largeur du terminal:Pour une solution plus générique, vous pouvez utiliser la sortie de
tput cols
pour déterminer la largeur du terminal.la source
--stat=$COLUMNS,$COLUMNS
? Taper à chaque fois est fou.export COLUMNS
à votre~/.bashrc
, et dans votre~/.gitconfig
sous[alias]
, ajoutersmart-diff = ! "gitsmartdiff() { git diff $2 --stat=$COLUMNS,$COLUMNS; }; gitsmartdiff"
diff
. Je veux que cela fonctionne pour les fusions et les tirages, etc. (Je ne peux même pas le faire manuellement.) Je ne pense pas que GIT le supporte.Il y a une option
--name-only
:git diff --name-only
. L'option est également prise en charge par d'autres commandes git commeshow
etstash
.Les chemins ne sont pas raccourcis avec l'option.
la source
J'ai créé l'alias git suivant:
Il lit le nombre de colonnes à partir de la
tput cols
commande. Il diffère par défautmaster
, mais vous pouvez éventuellement spécifier une autre branche.la source
Une solution simple que j'ai trouvée était de faire ceci: (ne fonctionne que sur * nix, désolé pas d'osx)
Cette version fonctionne pour les deux, mais elle n'a pas fière allure sur osx.
la source
J'ai trouvé que le comportement de diff --stat a changé quelque part autour de git 1.7.10 où auparavant il raccourcissait les chemins de fichiers à une largeur fixe par défaut - il affiche maintenant autant que votre fenêtre de terminal le permet. Si vous rencontrez ce problème, assurez-vous de mettre à niveau vers la version 1.8.0 ou plus récente.
la source