Respuestas:
Proporcione una ruta (myfolder en este caso) y simplemente ejecute:
git diff myfolder/
git diff -- myfolderpara 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 mastery 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-symlinksopción para que el comando leagit difftool --dir-diff --no-symlinks
No solo puede agregar una ruta, sino que puede agregar git diff --relativepara 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ónrelativeFirmado por: Laurent Arnoud
Acked by: Đoàn Trần Công DanhLa
diff.relativeopción booleana establecida entruemuestra solo cambios en el directorio / valor actual especificado por elpathargumento de larelativeopción y muestra los nombres de ruta relativos al directorio mencionado anteriormente.Enseñar
--no-relativea anular antes--relativeAgregue para la documentación de opciones git-format-patch (1)
--relativey--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