Как узнать в GIT, на какой ветке изначально был сделан определенный коммит? И/или какие коммиты изначально были сделаны на определенной ветке?

Как узнать в GIT, на какой ветке изначально был сделан определенный коммит? И/или какие коммиты изначально были сделаны на определенной ветке?

Я придумал следующий трюк, который вроде как работает, но я уверен, что должен быть более простой способ сделать это. Для каждого коммита я на самом деле беру первую строку команды '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  ....

Кроме того, как мне легко получить список коммитов, которые были изначально сделаны, например, на ветке «2021.04.OoC»?

решение1

На самом деле это довольно просто, с

git log <branch>

решение2

Это невозможно.

Ветки в Git — это просто указатели на определенные ревизии (коммиты). По мере добавления дополнительных коммитов и их отправки указатель ветки перемещается локально и удаленно. Затем, после удаления ветки, она исчезает. Даже если она не удалена, указатель ветки может переместиться таким образом, что информация станет недоступной.

Вы можете сделать вывод, в разумной степени, откуда пришел коммит, используя надежную стратегию ветвления Git и просматривая сообщения коммитов слияния. Эти сообщения обычно содержат имена обеих веток, которые были слиты. Однако, если вы используете слияние нескольких веток (слияние осьминога), угадывать становится намного сложнее.


Если вы не используете стратегию ветвления, вам стоит серьезно задуматься об этом. Если вы полагаетесь на имена ветвей для... ну, чего угодно, на самом деле, вам, вероятно, следует прекратить это. Это в лучшем случае ненадежно.

Связанный контент