¿Cómo hago 'git diff' en un directorio determinado?
git diff
en 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?
Proporcione una ruta (micarpeta en este caso) y simplemente ejecute:
git diff myfolder/
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 master
y bryan-working
:
git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/
O de una sucursal local a una remota:
git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
Lo que estaba buscando era esto:
git diff <ref1>..<ref2> <dirname>
No solo puede agregar una ruta, sino que también puede agregarla git diff --relative
para 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 DanhLa
diff.relative
opción booleana establecida entrue
muestra solo los cambios en el directorio/valor actual especificado por elpath
argumento de larelative
opción y muestra los nombres de ruta relativos al directorio antes mencionado.Enseñar a anular
--no-relative
antes--relative
Agregue la documentación de opciones de git-format-patch(1)
--relative
y--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 preguntaReportado 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
--relative
así lo solicitan.En
diff_unmerge()
,NULL
se devolverá si la ruta solicitada está fuera de los directorios interesantes, por lo que nos encontraremos conNULL
una desreferencia del punterorun_diff_files
al intentar desreferenciar su valor de retorno.Sin embargo , comprobar el valor de retorno de
diff_unmerge
antes 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.