Estoy escribiendo un pequeño script y quiero saber cuántas confirmaciones hice en una sucursal actual desde que se creó.
En este ejemplo, tendría 2 commits hechos en child
:
git checkout master git checkout -b child ... git commit -a ... git commit -a
Entonces, lo que quiero es
commit_number = ... echo $commit_number
Gracias por tu ayuda.
Git puede proporcionarle el número de confirmaciones sin más secuencias de commands shell.
git rev-list master.. --count
rev-list
es un command semi oculto (no incluido en la git help
) que se utiliza para trabajar con revisiones.
Como master..
--count
los commits desde la base del master y la twig actual hasta la twig actual, --count
le dará el conteo de ellos.
Si en cambio desea tener el número de confirmaciones entre las dos revisiones, usaría master...
Para elaborar: entre como desde el maestro hasta el ancestro común más reciente de maestro y la twig actual (HEAD), y hasta la twig actual de nuevo. Si visualizas el historial de compromisos como un tree, deberías poder seguir las dos twigs del antecesor común. master..
por otro lado solo contará una de las dos twigs.
Entonces, si quieres usar master..
o master...
depende de si quieres saber cuántos commits hiciste en tu bifurcación desde que la dividiste ( master..
), o la diferencia entre el master actual y la sucursal, el número de confirmaciones en el maestro y la sucursal desde que se dividió la sucursal.
Asumiendo que se ramificó desde el maestro, maestro … su master..yourbranch
le da el range de confirmaciones que están en su yourbranch
pero no en el maestro.
Entonces solo tiene que enumerarlos una línea cada uno y contar el número de líneas:
git log master..yourbranch --pretty=oneline | wc -l
Actualización : git rev-list ahora tiene --count
:
git rev-list --count master..
Con versiones anteriores de Git:
git rev-list master.. |wc -l
rev-list enumera las revisiones, y el master..
hace reference a las confirmaciones ya que el HEAD
actual divergió del master
.