ver tipos tag qué modificados existen etiquetas crear archivos git git-log

tag - qué tipos de etiquetas existen en git



¿Cómo obtener el historial de compromisos para una sola rama? (4)

Digamos que creé una nueva rama my_experiment de master e hice varias confirmaciones para my_experiment . Si hago un git log cuando my_experiment en my_experiment , veo las confirmaciones hechas a esta rama, pero también las confirmaciones hechas al master antes de que se my_experiments rama my_experiments .

Me resultaría muy útil ver el historial de todos los commits de la rama my_experiments hasta que my_experiments la creación de esa rama, efectivamente una verdadera historia de esa rama. De lo contrario, no es claro para mí cuando miro en el registro si las confirmaciones estaban en la rama my_experiments o no.

¿Hay alguna manera de hacer esto con Git?


Creo que una opción para tus propósitos es git log --oneline --decorate . Esto le permite conocer la confirmación comprobada y los compromisos principales para cada rama que tenga en su línea argumental. Al hacer esto, tiene una buena visión de la estructura de su repositorio y las confirmaciones asociadas a una rama específica. Creo que leer this podría ayudar.


El comando git merge-base se puede usar para encontrar un ancestro común. Entonces, si my_experiment aún no se ha fusionado en master y my_experiment se ha creado desde master, podría:

git log --oneline `git merge-base my_experiment master`..my_experiment


Nota: si limita ese registro a la última n confirmación (las últimas 3 confirmaciones, por ejemplo, git log -3), asegúrese de poner un espacio entre ''n'' y su bifurcación:

git log -3 master..

Antes de Git 2.1 (agosto de 2014), este error: git log -3master.. realidad te mostraría las últimas 3 confirmaciones de la rama actual (aquí my_experiment ), ignorando el límite master (es decir, si my_experiment contiene solo una confirmación, 3 seguiría estar en la lista, 2 de ellos del master )

Ver commit e3fa568 por Junio ​​C Hamano ( gitster ) :

revisión: analizar " git log -<count> " con más cuidado

Esta línea de comando mal escrita simplemente ignora " master " y termina mostrando dos confirmaciones de la HEAD actual:

$ git log -2master

porque alimentamos " 2master " a atoi() sin asegurarnos de que toda la cadena se analiza como un entero.

Use la función auxiliar strtol_i() lugar.


Puedes usar un range para hacer eso.

git log master..

Si ha revisado su rama my_experiment . Esto comparará dónde está el master en HEAD (la punta de my_experiment ).