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 ブランチ戦略を使用し、マージ コミットのコミット メッセージを確認することで、コミットがどこから来たのかをある程度推測できます。これらのメッセージには通常、マージされた両方のブランチの名前が含まれています。ただし、マルチブランチ マージ (オクトパス マージ) を使用している場合は、推測がはるかに難しくなります。


ブランチ戦略を使用していない場合は、真剣に検討する必要があります。ブランチ名に依存している場合は、実際には、おそらくそれをやめるべきです。せいぜい信頼性が低いだけです。

関連情報