git diff
en realidad ejecuta un diff en todo el código fuente. ¿Cómo hago esto en un directorio determinado, para que pueda ver las modificaciones en los archivos debajo de él?
Proporcione una ruta (myfolder en este caso) y simplemente ejecute:
git diff myfolder/
git diff -- myfolder
para minimizar la ambigüedad de git. La notación general para git diff (y muchos comandos de git) es git diff [commit-ish] -- [path]
donde commit-ish se establece de forma predeterminada en HEAD (donde se encuentra ahora) y [path]
en el directorio raíz de git, pero puede ser cualquier cosa relativa a su directorio actual. Sin el --
, git adivinará a qué te refieres, [commit-ish]
o [path]
. En algunos casos, esto hace que git diga que la notación es "ambigua". Si recuerdo correctamente.
git diff master..develop myfolder/
como dijo @CrandellWS en el comentario sobre la pregunta original. El estado de Git le mostrará cambios si eso es lo que está buscando.
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 desde una sucursal local a una remota:
$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
Debes acostumbrarte a mirar la documentación para cosas como esta. Es muy útil y mejorará tus habilidades muy rápidamente. Aquí está la parte relevante cuando lo hacesgit help diff
git diff [options] [--no-index] [--] <path> <path>
Los dos <path>
s son lo que necesita cambiar a los directorios en cuestión.
Agrega Beyond Compare como tu difftool en Git y agrega un alias para diffdir como:
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
Obtenga el gitdiff como:
git diffdir 4bc7ba80edf6 7f566710c7
Referencia: Comparar directorios completos con git difftool + Beyond Compare
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
lugar
--no-symlinks
opción para que el comando leagit difftool --dir-diff --no-symlinks
No solo puede agregar una ruta, sino que puede agregar git diff --relative
para obtener resultados relativos a esa carpeta.
git -C a/folder diff --relative
Y con Git 2.28 (Q3 2020), los comandos en la " diff
" familia aprendieron a honrar la " diff.relative
" variable de configuración.
Ver commit c28ded8 (22 de mayo de 2020) por Laurent Arnoud ( spk
) .
(Fusión por Junio C Hamano - gitster
- en commit e34df9a , 02 jun 2020)
diff
: agregar la opción de configuraciónrelative
Firmado por: Laurent Arnoud
Acked by: Đoàn Trần Công DanhLa
diff.relative
opción booleana establecida entrue
muestra solo cambios en el directorio / valor actual especificado por elpath
argumento de larelative
opción y muestra los nombres de ruta relativos al directorio mencionado anteriormente.Enseñar
--no-relative
a anular antes--relative
Agregue para la documentación de opciones git-format-patch (1)
--relative
y--no-relative
La documentación ahora incluye :
diff.relative
:Si se establece en '
true
', 'git diff
' no muestra los cambios fuera del directorio y no muestra los nombres de ruta relativos al directorio actual.
Si desea excluir los subdirectorios, puede usar
git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)
Para utilizar Beyond Compare como difftool para el directorio diff, recuerde habilitar los enlaces simbólicos siguientes de la siguiente manera:
En una Vista de comparación de carpetas → Reglas (icono de árbitro):
Y luego, habilite los siguientes enlaces simbólicos y actualice los valores predeterminados de la sesión:
O,
configura el alias así:
git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"
Tenga en cuenta que, en cualquier caso, se conservan todas las ediciones realizadas al lado (izquierda o derecha) que se refieren al árbol de trabajo actual.
git diff master..yourbranch path/to/folder