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 분기 전략을 사용하고 병합 커밋의 커밋 메시지를 보면 커밋이 어디에서 왔는지 합리적으로 추론할 수 있습니다. 이러한 메시지에는 일반적으로 병합된 두 분기의 이름이 포함됩니다. 다중 분기 병합(문어 병합)을 사용하는 경우 추측이 훨씬 더 어려워집니다.


분기 전략을 사용하지 않는 경우 심각하게 고려해야 합니다. 만약 당신이 브랜치 이름에 의존하고 있다면… 뭐, 사실은 그것을 멈춰야 할 것입니다. 기껏해야 신뢰할 수 없습니다.

관련 정보