2011-12-05 13 views
57

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.¿Cómo git diff en un determinado directorio?

+0

http://stackoverflow.com/a/12123669/1815624 'ruta diff master..yourbranch git/a/folder' – CrandellWS

Respuesta

60

proporcionar un camino (myfolder en este caso) y acaba de ejecutar:

git diff myfolder/

+11

me gustaría usar' git diff - myfolder' para minimizar la ambigüedad a git. La notación general para git diff (y muchos comandos de git) es 'git diff [commit-ish] - [path]' donde commit-ish se establece por defecto en HEAD (donde se encuentra ahora) y '[path]' por defecto en el El directorio raíz de git, pero puede ser cualquier cosa relativa a su directorio actual. Sin el '- ', git adivinará lo que quiere decir,' [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 pruebo el método en la respuesta y el método en el comentario. – ray

+0

@ray, lo que significa que no tiene diferencias entre el árbol de trabajo y la última confirmación –

5

debe hacer un hábito de 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 hace git help diff

git diff [options] [--no-index] [--] <path> <path> 

Los dos <path> s son lo que necesita para cambiar a los directorios en cuestión.

22

Si está comparando ramas diferentes, necesita usar -- para separar una revisión de git de una ruta del sistema de archivos. Por ejemplo, con dos ramas locales, master y bryan-working:

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

o de una rama local a un mando a distancia:

$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/ 
+10

Solo se necesita una cláusula después de enumerar ambas ramas, como en: git diff branch1 branch2 - ruta/a/dir – emery