En GIT, ¿cómo puedo saber en qué rama se realizó inicialmente una confirmación específica? ¿Y/o qué confirmaciones se realizaron inicialmente en una rama específica?

En GIT, ¿cómo puedo saber en qué rama se realizó inicialmente una confirmación específica? ¿Y/o qué confirmaciones se realizaron inicialmente en una rama específica?

Se me ocurrió el siguiente truco que funciona, pero estoy seguro de que debe haber una manera más fácil de hacerlo. Para cada confirmación, en realidad tomo la primera línea del comando 'git Branch --contains...'.

while read v t
do 
    echo -e "$v\t\c"
    git branch -r --contains $v | head -1 | tr -d "\n"
    echo -e "\t$t"
    v=""
    t=""
done
    0d0098b4e         origin/2021.10.EM1    XXX-2360 : Function2: XXX 4.1 Upgrade  ....
    476d60fa5         origin/2021.10.EM1    XXX-2362 : Function2: XXX 4.1 Upgrade  ....
    49455ce5d         origin/2021.10.EM1    XXX-2362 : Function2: XXX 4.1 Upgrade  ....
    47b1f1817         origin/2021.10.EM1    XXX-2362 : Function2: XXX 4.1 Upgrade  ....
    e10f005ef         origin/2021.10.EM1    XXX-2360 : Function2: XXX 4.1 Upgrade  ....
    7317613b5         origin/2021.10.EM1    XXX-2353: Revert change from wrong JIRA ....
    16b41ce0c         origin/2021.10.EM1    XXX-2353 : Function2: XXX 4.1 Upgrade  ....
    4756fe099         origin/2021.10.EM1    XXX-2353 : Function2: XXX 4.1 Upgrade  ....
    8c557c520         origin/2021.04.OoC    XXX-2339 : Function2: XXX 4.1 Upgrade  ....
    6054b16a1         origin/2021.04.OoC    XXX-2339 : Function2: XXX 4.1 Upgrade  ....
    ad9d66057         origin/2021.04.OoC    XXX-2339 : Function2: XXX 4.1 Upgrade  ....
    b19ad447e         origin/2021.04.OoC    XXX-2083 : reset calendar mechanism to previous behaviour ....
    c1c03a83c         origin/2021.04.OoC    XXX-2083 : Update default value for PROD to false to keep old behaviour ....
    33c034f37         origin/2021.09.Minor  XXX-1901 YYY-817 : Added the Business calendars back ....
    acbbfaf4a         origin/2021.09.Minor  XXX-1901 YYY-817 : Removal of business calendars ....
    1f5d74216         origin/2021.04.OoC    XXX-2292 : Function2: XXX 4.1 Upgrade  ....
    117f0ca7c         origin/2021.04.OoC    XXX-2083 : Update default value for PROD to true to keep old behaviour ....
    dffc5810e         origin/2021.04.OoC    XXX-2322 : Function2: XXX 4.1 Upgrade  ....
    a6590add6         origin/2021.04.OoC    XXX-2322 : Function2: XXX 4.1 Upgrade  ....

Además, ¿cómo podría obtener fácilmente la lista de confirmaciones que se realizaron originalmente, por ejemplo, en la rama '2021.04.OoC'?

Respuesta1

En realidad es bastante fácil, con

git log <branch>

Respuesta2

Esto no es posible.

Las ramas en Git son solo indicadores de revisiones específicas (confirmaciones). A medida que agrega más confirmaciones y las envía, el puntero de la rama se mueve de forma local y remota. Luego, una vez eliminada una rama, desaparece. Incluso si no se elimina, el puntero de la rama puede moverse de manera que la información no esté disponible.

Puede inferir, hasta un grado razonable, de dónde proviene una confirmación, cuando utiliza una estrategia de ramificación sólida de Git y observa los mensajes de confirmación de las confirmaciones de fusión. Estos mensajes suelen contener los nombres de ambas ramas que se fusionaron. Sin embargo, si estás utilizando la combinación de múltiples ramas (fusión de pulpo), las adivinanzas se vuelven mucho más difíciles.


Si no estás utilizando una estrategia de ramificación, deberías considerarla seriamente. Si confías en los nombres de las sucursales para... bueno, cualquier cosa, en realidad, probablemente deberías detenerlo. En el mejor de los casos, no es confiable.

información relacionada