git diffen 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?
Me gustaría usar 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.
L0LN1NJ4
2
Esto no imprime nada cuando intento el método en la respuesta y el método en el comentario.
Ray
@ray, lo que significa que no tiene diferencias entre el árbol de trabajo y la última confirmación
valerij vasilcenko
3
Para @ray y las personas futuras que vean esto, puede incluir las ramas en las que intenta diferenciar, 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.
BVBA acelere el
2
@ray asegúrese de estar en el directorio raíz. La ruta será relativa a su directorio actual.
Nickofthyme
59
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:
Solo se necesita una cláusula después de enumerar ambas ramas, como en: git diff branch1 branch2 - ruta / a / dir
emery
4
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
El signo igual parece estar equivocado para git 2.17.1. Usar en su git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"lugar
Mark Schäfer
Tenga en cuenta que cuando use Beyond Compare para dir diff, debe configurarlo para seguir enlaces simbólicos (en una vista de comparación de carpetas -> Reglas (icono de árbitro) -> Manejo -> seguir enlaces simbólicos) O, agregue la --no-symlinksopción para que el comando leagit difftool --dir-diff --no-symlinks
Ashutosh Jindal
1
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.
Firmado por: Laurent Arnoud Acked by: Đoàn Trần Công Danh
La diff.relativeopción booleana establecida en truemuestra solo cambios en el directorio / valor actual especificado por el pathargumento de la relativeopción y muestra los nombres de ruta relativos al directorio mencionado anteriormente.
Enseñar --no-relativea anular antes--relative
Agregue para la documentación de opciones git-format-patch (1) --relativey--no-relative
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
Respuestas:
Proporcione una ruta (myfolder en este caso) y simplemente ejecute:
fuente
git diff -- myfolder
para minimizar la ambigüedad de git. La notación general para git diff (y muchos comandos de git) esgit 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 localesmaster
ybryan-working
:O desde una sucursal local a una remota:
fuente
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 haces
git help diff
Los dos
<path>
s son lo que necesita cambiar a los directorios en cuestión.fuente
Agrega Beyond Compare como tu difftool en Git y agrega un alias para diffdir como:
Obtenga el gitdiff como:
Referencia: Comparar directorios completos con git difftool + Beyond Compare
fuente
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.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)La documentación ahora incluye :
fuente
Si desea excluir los subdirectorios, puede usar
fuente
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í:
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.
fuente