Wie kann ich in GIT herausfinden, auf welchem ​​Zweig ein bestimmter Commit ursprünglich ausgeführt wurde? Und/oder welche Commits ursprünglich auf einem bestimmten Zweig ausgeführt wurden?

Wie kann ich in GIT herausfinden, auf welchem ​​Zweig ein bestimmter Commit ursprünglich ausgeführt wurde? Und/oder welche Commits ursprünglich auf einem bestimmten Zweig ausgeführt wurden?

Mir ist der folgende Trick eingefallen, der einigermaßen funktioniert, aber ich bin sicher, dass es einen einfacheren Weg geben muss. Für jedes Commit nehme ich die erste Zeile des Befehls „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  ....

Und wie kann ich einfach die Liste der Commits erhalten, die ursprünglich beispielsweise im Zweig „2021.04.OoC“ erstellt wurden?

Antwort1

Eigentlich ist es ganz einfach, mit

git log <branch>

Antwort2

Das ist nicht möglich.

Branches in Git sind lediglich Zeiger auf bestimmte Revisionen (Commits). Wenn Sie weitere Commits hinzufügen und pushen, bewegt sich der Branch-Zeiger lokal und remote. Wenn ein Branch gelöscht wird, ist er weg. Selbst wenn er nicht gelöscht wurde, kann sich der Branch-Zeiger auf eine Weise bewegen, die die Informationen unzugänglich macht.

Sie können bis zu einem gewissen Grad ableiten, woher ein Commit stammt, wenn Sie eine solide Git-Branching-Strategie verwenden und sich Commit-Nachrichten von Merge-Commits ansehen. Diese Nachrichten enthalten normalerweise die Namen beider zusammengeführten Branches. Wenn Sie Multi-Branch-Merging (Octopus Merge) verwenden, wird das Erraten jedoch viel schwieriger.


Wenn Sie keine Branching-Strategie verwenden, sollten Sie ernsthaft darüber nachdenken. Wenn Sie sich auf Branch-Namen verlassen, für … nun ja, irgendetwas, sollten Sie damit wahrscheinlich aufhören. Es ist bestenfalls unzuverlässig.

verwandte Informationen