¿Cómo hago 'git diff' en un directorio determinado?

Resuelto priya asked hace 13 años • 10 respuestas

git diffen realidad ejecuta una diferencia en todo el código fuente. ¿Cómo hago esto en un directorio determinado para poder ver las modificaciones en los archivos que se encuentran debajo de él?

priya avatar Dec 05 '11 14:12 priya
Aceptado

Proporcione una ruta (micarpeta en este caso) y simplemente ejecute:

git diff myfolder/
Geo avatar Dec 05 '2011 07:12 Geo

Si está comparando diferentes ramas, debe usar --para separar una revisión de Git de una ruta del sistema de archivos. Por ejemplo, con dos sucursales locales mastery bryan-working:

git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/

O de una sucursal local a una remota:

git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
bcattle avatar Jun 22 '2015 02:06 bcattle

Lo que estaba buscando era esto:

git diff <ref1>..<ref2> <dirname>
Amin avatar Jan 19 '2021 21:01 Amin

No solo puede agregar una ruta, sino que también puede agregarla git diff --relativepara obtener resultados relativos a esa carpeta.

git -C a/folder diff --relative

Y con Git 2.28 (tercer trimestre de 2020), los comandos de la " diff" familia aprendieron a respetar la " diff.relative" variable de configuración.

Véase el compromiso c28ded8 (22 de mayo de 2020) de Laurent Arnoud ( spk) .
(Fusionado por Junio ​​C Hamano -- gitster-- en el compromiso e34df9a , 2 de junio de 2020)

diff: agregar opción de configuraciónrelative

Aprobado por: Laurent Arnoud
Aprobado por: Đoàn Trần Công Danh

La diff.relativeopción booleana establecida en truemuestra solo los cambios en el directorio/valor actual especificado por el pathargumento de la relativeopción y muestra los nombres de ruta relativos al directorio antes mencionado.

Enseñar a anular --no-relativeantes--relative

Agregue la documentación de opciones de git-format-patch(1) --relativey--no-relative

La documentación ahora incluye :

diff.relative:

Si se establece en ' true', ' git diff' no muestra cambios fuera del directorio y muestra nombres de ruta relativos al directorio actual.


Advertencia: Antes de Git 2.34 (cuarto trimestre de 2021), " git diff --relative" ( man ) generaba un error de segmentación y/o producía un resultado incorrecto cuando había rutas no fusionadas.

Véase el compromiso 8174627 (22 de agosto de 2021) de Đoàn Trần Công Danh ( sgn) .
(Fusionado por Junio ​​C Hamano -- gitster-- en la confirmación c8f4916 , 8 de septiembre de 2021)

diff-lib: ignora las rutas que están fuera de $cwd si --relative pregunta

Reportado por: Thomas De Zeeuw
Probado por: Carlo Arenas
Aprobado por: Đoàn Trần Công Danh

Para los comandos de la familia diff, podemos decirles que excluyan cambios fuera de algunos directorios si --relativeasí lo solicitan.

En diff_unmerge(), NULLse devolverá si la ruta solicitada está fuera de los directorios interesantes, por lo que nos encontraremos con NULLuna desreferencia del puntero run_diff_filesal intentar desreferenciar su valor de retorno.

Sin embargo , comprobar el valor de retorno de diff_unmergeantes de desreferenciar no es suficiente.
Desde entonces, el motor de diferencias intentará trabajar en dicha especificación de ruta más adelante.

En su lugar, no hagamos diferencias con esas entradas que no son interesantes.
Como efecto secundario, al saltar así, podemos ahorrar algunos ciclos de CPU.

VonC avatar Jun 07 '2020 00:06 VonC