2017-11-27 5 views
0

병합 커밋에서 병합 된 분기를 알고 싶습니다.병합 병합에서 병합 된 분기 감지

그래서 커밋 훅을 사용하여 병합이 발생하면 병합 분기가 포함 된 병합 메시지를 자동으로 작성하기로 결정했습니다.

그러나 이것은 문제가 있습니다. 내가 커밋 객체를 볼 때 어떤 브랜치가 병합되는지 알 수가 없었다.

커밋 개체를 보는 동안 병합되는 분기를 알 수있는 좋은 방법이 있습니까?

+2

브랜치는 문자 그대로 특정 커밋에 대한 참조라는 점에 유의하십시오. 따라서 "이 병합 병합을 수행하고이 분기가 공통 조상을 공유합니까?"와 같은 질문을 할 수 있지만 "어떤 분기가 병합 되었습니까?" 반드시 Git의 관점에서 의미있는 것은 아닙니다. –

+0

나는 당신이 얻으려는 것이 무엇인지 확신하지 못한다. (물건이나 가지 이름?). 커밋 유형 (병합)을 식별하고 공통 조상을 결정할 수 있습니다. 이제'git show '은 병합 된 2 개의 분기의 끝인'Merge : commit commit'을 보여줍니다. 더 좋은 방법으로 그것을 얻는 방법을 아직 알지 못했습니다. 거기에서'git merge-base '을 사용하여 공통 조상, 즉 브랜치가 생성 된 객체를 얻을 수 있습니다. –

답변

0

당신은 병합의 부모 커밋은 다음 명령으로 커밋 얻을 수 있습니다 :

내 이전 코멘트에 명시된 바와 같이
git rev-list --parents -n 1 <commit> 

, 당신은 지점 이름 만 커밋을 얻을 수 없습니다. 두 커밋에서 다음과 같이 포크 포인트를 얻을 수 있습니다.

git merge-base <commit> <commit> 

보너스 : 커밋 순서는 중요합니다. 왼쪽 커밋은 병합을 실행 한 지점이고 오른쪽 커밋은 병합 한 분기입니다. 예를 들어 master 브랜치에 있고 git merge --no-ff develop을 수행하면 왼쪽 커밋이 마스터가되고 오른쪽 커밋이 발생합니다.