El git diff
comando toma valores opcionales para --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>.
(Para las secuencias de comandos, es posible que desee utilizarlo git diff-tree
directamente, ya que es más un comando de "plomería", aunque sospecho que estará bien de cualquier manera. Tenga en cuenta que necesita el mismo texto adicional --stat
cuando lo usa git diff-tree
. La diferencia esencial entre usar la git diff
"porcelana "front end, y el git diff-tree
comando de fontanería, es el que git diff
busca las opciones configuradas para diff.renames
decidir si se debe realizar la detección de cambio de nombre. Bueno, eso, además de que el front end git diff
hará el equivalente git diff-index
a comparar una confirmación con el índice , por ejemplo. En otras palabras, git diff
lee su configuración e invoca la tubería correcta automáticamente ).
--stat-graph-width=...
modificador separado . Tenga en cuenta también que la configuración alta--stat-graph-width=
y--stat-name-width=
no es suficiente, también debe configurar lo--stat-width=
suficientemente grande para cubrir los dos.diff.statGraphWidth
que puede usar para establecer el--stat-graph-width
valor, pero las otras predeterminadamente tienen el ancho de su terminal. (Entonces, respuesta alternativa: "sí, solo haz que tu ventana de terminal tenga 1000 columnas de ancho" :-))Para el procesamiento de scripts, sería mejor utilizar uno de los siguientes:
Cada uno de estos se vuelve más útil para un procesamiento de scripts robusto cuando se combina con la
-z
opción, que se utilizaNUL
como terminadores de campo.fuente
git rev-parse --show-toplevel
. El problema original se refería a rutas truncadas, lo cual es un problema en diffstats, particularmente para nombres de archivo largos o un valor bajo para--stat-name-width
. Los comandos anteriores no truncarán las rutas, pero mostrarán la ruta "completa" según lo solicitado, aunque aún en relación con la raíz del repositorio.Para los usuarios de Bash, puede usar la
$COLUMNS
variable para llenar automáticamente el ancho de terminal disponible:Es posible que los nombres de ruta muy largos todavía estén truncados; en este caso, puede reducir el ancho de la parte +++ / --- usando
--stat-graph-width
, por ejemplo, esto lo limita a 1/5 del ancho del terminal:Para una solución más genérica, puede usar la salida de
tput cols
para determinar el ancho del terminal.fuente
--stat=$COLUMNS,$COLUMNS
? Escribirlo todo el tiempo es una locura.export COLUMNS
a tu~/.bashrc
, y en tu~/.gitconfig
debajo[alias]
, agregasmart-diff = ! "gitsmartdiff() { git diff $2 --stat=$COLUMNS,$COLUMNS; }; gitsmartdiff"
diff
. Quiero que también funcione para fusiones y extracciones, etc. (Ni siquiera puedo hacerlo manualmente). No creo que GIT lo admita.Hay una opción
--name-only
:git diff --name-only
. La opción también es compatible con otros comandos de git comoshow
ystash
.Las rutas no se acortan con la opción.
fuente
Creé el siguiente alias de git:
Lee el recuento de columnas del
tput cols
comando. De forma predeterminada, difiere contramaster
, pero opcionalmente puede especificar otra rama.fuente
Una solución simple que encontré fue hacer esto: (solo funciona en * nix, lo siento, no osx)
Esta versión funciona para ambos, pero no se ve muy bien en osx.
fuente
Descubrí que el comportamiento de diff --stat cambió en algún lugar alrededor de git 1.7.10, donde anteriormente acortaba las rutas de los archivos a un ancho fijo de forma predeterminada; ahora muestra todo lo que permite la ventana de su terminal. Si tiene este problema, asegúrese de actualizar a 1.8.0 o más reciente.
fuente