2012-03-15 17 views
38

¿Hay alguna manera de ver con git log o algún otro comando solo las confirmaciones que se agregaron después de la creación de la rama?show commits desde la creación de la rama

usage: git log [<options>] [<since>..<until>] [[--] <path>...] 
    or: git show [options] <object>... 

    --quiet    suppress diff output 
    --source    show source 
    --decorate[=...]  decorate options 
+1

relacionadas: [¿Cómo conseguir los cambios en una sucursal en git] (http://stackoverflow.com/questions/53569/how- to-get-the-changes-on-a-branch-in-git) –

Respuesta

3

Sí, es posible comparar su "nueva" rama con la rama principal (comúnmente llamado "maestro"):

git log master..<your_branch_name> 

Por supuesto, sustituir <your_branch_name>.

+4

Esto solo muestra los commits desde la última extracción de master, o viceversa, que no es lo mismo que mostrar los commits desde que se creó la rama. – spiffytech

+0

también funciona con git diff master ... your_branch_name – jspooner

39

Uso tres períodos para hacer referencia al comprometerse en la que la segunda rama se separó de la primera, o en este caso su sucursal se separaron de maestro:

git log master...<your_branch_name> 

Asegúrese de utilizar tres períodos para este caso.

lateral Nota: También puede dejar fuera de su nombre de la sucursal como git referencia automáticamente el puntero HEAD en ese caso, por ejemplo:

git log master... 

es equivalente al ejemplo anterior. Esto funciona en cualquier lugar donde esté disponible una comparación de compromiso.

+1

En mi caso funciona 'git log master..'. – MKatleast3

+1

'git log master ...' NO funcionó para mí, solo 'git log master..' funcionó. Observe los dos puntos en lugar de tres – NecipAllef

+0

Me alegro de que funcionó para usted. Double for es obviamente sintaxis correcta. Pero ten cuidado, los puntos SI importan. Vea la respuesta de Alan Thompson para una explicación detallada de la diferencia entre la notación de punto doble y triple. –

29

documentación completa está aquí: https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html

Suponga que tiene un acuerdo de recompra que tiene este aspecto:

base - A - B - C - D (master) 
       \ 
       \- X - Y - Z (myBranch) 

verificar el estado de recompra:

> git checkout master 
Already on 'master' 
> git status ; git log --oneline 
On branch master 
nothing to commit, working directory clean 
d9addce D 
110a9ab C 
5f3f8db B 
0f26e69 A 
e764ffa base 

y para MyBranch:

> git checkout myBranch 
> git status ; git log --oneline 
On branch myBranch 
nothing to commit, working directory clean 
3bc0d40 Z 
917ac8d Y 
3e65f72 X 
5f3f8db B 
0f26e69 A 
e764ffa base 

Supongamos que está en myBranch, y desea solo cambios DESDE el maestro. Utilice la versión de dos puntos:

> git log --oneline master..myBranch 
3bc0d40 Z 
917ac8d Y 
3e65f72 X 

La versión de tres puntos da todos los cambios desde la punta del maestro a la punta de MyBranch. Sin embargo, tenga en cuenta que el común cometer B no está incluido:

> git log --oneline master...myBranch 
d9addce D 
110a9ab C 
3bc0d40 Z 
917ac8d Y 
3e65f72 X 

POR FAVOR: git log y git diff comportan de manera diferente! El comportamiento no es exactamente opuesta, pero casi:

> git diff master..myBranch 
diff --git a/rev.txt b/rev.txt 
index 1784810..e900b1c 100644 
--- a/rev.txt 
+++ b/rev.txt 
@@ -1 +1 @@ 
-D 
+Z 

> git diff master...myBranch 
diff --git a/rev.txt b/rev.txt 
index 223b783..e900b1c 100644 
--- a/rev.txt 
+++ b/rev.txt 
@@ -1 +1 @@ 
-B 
+Z 

Por lo tanto, la versión de dos puntos muestra el diff desde la punta del maestro (es decir, D) a la punta de MyBranch (Z). La versión de tres puntos muestra la diferencia desde la base de myBranch (es decir, B) hasta la punta de myBranch (Z).

+0

Si hiciera 'git log --oneline myBranch..master', ¿eso le daría' D' y 'C'? – MiniGod

+1

upvote para describir la diferencia entre ... y ... y proporcionar ejemplos. ¡Respuesta impresionante! –

8

Si estás en la rama que ha creado:

git log master.. 
Cuestiones relacionadas