2010-07-30 22 views
97

Estoy usando Git en Ubuntu 10.04 (Lucid Lynx).Mostrar diff entre commits

Me he comprometido con mi maestro.

Sin embargo, quiero ver la diferencia entre estas confirmaciones. Todos ellos están en mi rama principal.

Por ejemplo:

commit dj374 
made changes 

commit y4746 
made changes 

commit k73ud 
made changes 

quiero obtener la diferencia entre k73ud y dj374. Sin embargo, cuando hice lo siguiente no pude ver los cambios que hice en k73ud.

git diff k73ud..dj374 > master.patch 

Respuesta

101

Trate

git diff k73ud^..dj374 

para asegurarse de incluir todos los cambios de k73ud en el diff resultante.

git diff compara dos puntos finales (instead of a commit range). Dado que el OP desea ver los cambios introducidos por k73ud, necesita una diferencia entre first parent commit of k73ud: k73ud^ (o k73ud^1 or k73ud~).

De esta manera, los resultados incluirán diff cambios desde k73ud padre (significado incluyendo los cambios de k73ud sí mismo), en lugar de los cambios introducidos desde k73ud (hasta dj374).

+1

¿Estás seguro? git diff 275e8922ab4e995f47a753b88b75c3027444a54c..a8d9d944c32e945cbb9f60b3f724ecc580da86ae funciona, pero 275e8922ab4e995f47a753b88b75c3027444a54c git diff^.. a8d9d944c32e945cbb9f60b3f724ecc580da86ae conocer el mensaje de error - "revisión desconocida o la ruta no en el árbol de trabajo" – demas

+0

@demas: funciona en mi máquina;) también se puede usar 'diff 275e8 git^a8d9d9' ya que es lo mismo que '' ..' '. – VonC

+3

@VonC En mi máquina, no es necesario utilizar^ –

38

Si desea ver los cambios introducidos con cada confirmación, trate de "git log -p"

9

utilizo gitk para ver la diferencia:

gitk k73ud..dj374 

Tiene un modo de interfaz gráfica de usuario de manera que la revisión es mas facil.

67

Para ver la diferencia entre:

su copia de trabajo y área de ensayo:

% git diff 

área de ensayo y la última se comprometen:

% git diff --staged 

su copia de trabajo y comprometerse 4ac0a6733:

% git diff 4ac0a6733 

Commit 4ac0a6733 y la última se comprometen:

% git diff 4ac0a6733 HEAD 

Commit 4ac0a6733 y comprometerse 826793951

% git diff 4ac0a6733 826793951 

Para una explicación más detallada ver the official documentation.

+0

Todos los escenarios posibles ¿eh? –

+2

también, si realmente quiere ver los diffs de un archivo en esos commits, 'git diff {x} {y} - filename' donde' {x} 'y' {y} 'son cualquiera de esos ejemplos. Ver también, 'git log -p', ya que hay cierta superposición. – michael

3

Para ver la diferencia entre dos confirmaciones diferentes (llamémosles a y b), utilice

git diff a..b 
  • Tenga en cuenta que la diferencia entre a y b es opuesta a b y a.

Para ver la diferencia entre sus últimos cometer y que aún no haya cambios confirmados, utilice

git diff 

Si usted quiere ser capaz de volver a la diferencia más adelante, se puede guardar en un archivo.

git diff a..b > ../project.diff 
8
  1. gitk --all
  2. Seleccione el primer commit
  3. Haga clic derecho por el otro, a continuación, diff seleccionado → este
+0

Estoy empezando a confiar en gitk un poco menos porque muestra un autor diferente del commiter que el real. –

-1

Use este comando para la diferencia entre comprometerse y unstaged:

git difftool --dir-diff 
Cuestiones relacionadas