2012-02-02 13 views

Respuesta

79

Los siguientes obras para mí:

git diff master:foo foo

En el pasado, pueden haber sido:

git diff foo master:foo

+6

Cada vez que veo una respuesta de la suya con respecto a 'diff' git, siempre pienso en http://stackoverflow.com/questions/5256249/git-diff- doesnt-show-enough/5257065 # 5257065 – VonC

+0

@VonC: gracias, es bueno saber que valió la pena dibujar esos :) Por cierto, ¿entiendes la rareza con la que actualicé mi respuesta? –

+2

¿Intentó con '--' para separar los parámetros de los argumentos de ruta? 'git diff - master: foo foo' – VonC

14

también: git diff master..feature foo

Desde git diff foo master:foo no funciona en directorios para mí.

+0

Yo tampoco. ¿Es algo de Windows? –

+0

@ScottStafford Estoy en Ubuntu, así que no, no parece que sea solo una cosa de Windows. – ArtBIT

+0

Funciona para mí siempre y cuando le dé explícitamente los dos nombres de rama (windows) 'git diff branch1: foo master: foo' – Meep

8
git difftool -v tag/branch filename 
72

Usted está tratando de comparar su árbol de trabajo con un nombre de rama en particular, por lo que desea esto:

git diff master -- foo 

que es de esta forma de git-diff (consulte la página de manual git-diff)

git diff [--options] <commit> [--] [<path>...] 
     This form is to view the changes you have in your working tree 
     relative to the named <commit>. You can use HEAD to compare it with 
     the latest commit, or a branch name to compare with the tip of a 
     different branch. 

FYI, también hay una opción --cached (también conocido como --staged) para ver el diff de lo que has preparado, más que todo en su árbol de trabajo:

git diff [--options] --cached [<commit>] [--] [<path>...] 
     This form is to view the changes you staged for the next commit 
     relative to the named <commit>. 
     ... 
     --staged is a synonym of --cached. 
+1

Gracias. No tengo idea de por qué, pero solo esta respuesta funcionó para mí con git 1.8.1 en Linux. – srking

+0

Excelente, gracias. Me colgó el deseo de incluir el nombre de mi rama actual en el comando diff, pero veo que no es necesario. – yoyo

+0

Esto funcionó para mí hace unos meses, pero no parece ser ahora. Actualmente estoy en la versión 2.7.4 de Git (Apple Git-66); No sé lo que tenía antes. – hBrent

7
git diff mybranch master -- file 

también debería funcionar

+3

Esto solo funciona para archivos comprometidos con mybranch, no una copia de trabajo actual del archivo. – yoyo

Cuestiones relacionadas