두 분기 간의 이전 병합 커밋을 어떻게 찾을 수 있습니까?이전 병합 커밋을 찾는 방법
마지막으로 릴리스 분기를 마스터 분기에 병합 한 이후로 내 마스터 분기에서 변경 사항을 확인하고 싶습니다. 마지막 분기 이후에 릴리스 분기의 변경 내용을 보려면 git diff ...release
분명히 git diff release...
은 마지막 병합 이전의 모든 변경 사항을 포함하므로 분명히 작동하지 않습니다. 따라서 나는 git diff
git log --reverse --ancestry-path `git merge-base HEAD release`.. \
--format=format:%H|head -n1
이 작동하고 git diff $(...)
함께 사용할 수있는 것 같습니다에 전달하는 마지막 병합의 커밋 ID를 필요가 있다고 생각하지만, 굉장히 복잡한 것 같다. 좀 더 쉬운 해결책이 있습니까?
예 여기
I
/\
A1 B1
\ |
| M
| |
A2 B2
I
초기 커밋된다. A[12]
은 릴리스 커밋이고 B[12]
은 마스터 커밋입니다. M
은 이전 커밋입니다. 이 예에서 마지막 병합과 마스터 사이의 변경 사항은 B2에 의해 도입 된 변경 사항 일뿐입니다. git merge-base A2 B2
은 A
을 반환하고 git diff B2 A1
은 B1
의 변경 내용을 포함합니다. 따라서 문제는 수동으로 M
을 찾을 필요없이 git diff M B2
을 실행할 수 있도록보다 복잡한 일반 경우에서 M을 찾는 방법입니다.
이것은 가장 효율적인 방법은 아니지만 'git log --graph --oneline'을 보면 커밋을 찾을 수 있습니다. – Shahbaz