git 커밋 기록이 다음과 같다고 가정합니다.
A---B---C---D---E---F master
\ /
X---Y---Z topic
마스터, AF에 대한 커밋 만 git list에 표시 할 수 있습니까? 즉, 커밋이 병합 된 브랜치에있는 경우 표시하고 싶지 않습니다.
git 커밋 기록이 다음과 같다고 가정합니다.
A---B---C---D---E---F master
\ /
X---Y---Z topic
마스터, AF에 대한 커밋 만 git list에 표시 할 수 있습니까? 즉, 커밋이 병합 된 브랜치에있는 경우 표시하고 싶지 않습니다.
git log
를 사용하여 커밋 만 표시 --first-parent
할 수 있으므로 올바른 항목을 얻을 수 있습니다.
답변:
git log
옵션 --first-parent
이 있으므로 topic
기록을 얻을 수 없습니다 .
에서 합병 master
의 master
커밋은 병합의 첫 조상이다. Git 로그를 사용하면 --first-parent를 사용하여 해당 커밋 만 표시 할 수 있으므로 올바른 내용을 얻을 수 있습니다.
--first-parent
그것을 않습니다 :)과 결합 --no-merges
하면 병합 커밋 숨길 수 있습니다
TLDR : git log origin/master --no-merges
마스터 로그를 제공하고 병합 된 커밋을 제외합니다 (이 경우 x, y, z).
원래 포인트
--first-parent
어떤 상황에서 도움이 될지에 의존하지 않는 또 다른 일반적인 방법 이 있습니다. 분기 제외 필터 사용
git log origin/topic ^origin/master
그러면의 origin/topic
모든 origin/master
커밋이 제거 된 로그가 제공 됩니다.
당신이 --no-merges
원할 수도 있고 원하지 않을 수도있는 병합 커밋을 숨기는 추가 할 수도 있습니다 .
또 다른 유용한 팁은 릴리스 노트 또는 분기에있는 내용의 통신에 편리 할 수있는 요약 된 요약을 더 많이 제공 하는 shortlog
대신 사용 log
하는 것입니다.
업데이트
이것을 다시 읽은 후에는 실제로 내가 게시 한 내용의 거의 역을 원할 것입니다. 그러나 master 및 foo ( git log origin/master ^origin/foo
) 에있는 모든 항목을 제외하게 됩니다. 그러나 당신은 또한 당신이 요구하는 것을 얻을 수 있습니다 (병합의 일부인 모든 커밋 숨기기)git log origin/master --no-merges
Charles의 답변이 저에게 효과적입니다.
git log has option --first-parent --no-merges, so you won't get topic history.
그러나 Git Extension, SourceTree, Tortoise Git와 같은 Git 활동에 그래픽 사용자 인터페이스를 사용하는 경우
그런 다음 도구에서 첫 번째 부모를 확인할 수있는 직접적인 옵션이 있습니다. 대부분의 사람들이 그래픽 인터페이스를 쉽게 생각하기 때문에이 답변을 목록에 추가하려고 생각했습니다. 필요한 경우 도구에서 특정 분기의 모든 커밋을 직접 체리 선택할 수 있습니다.
두 가지 도구의 예를 첨부했습니다. 다른 도구에서도 비슷합니다. [개인 저장소이므로 사용자 이름, git repo 이름을 흐리게 처리했지만 도구에서 첫 번째 부모를 사용하는 방법에 대한 아이디어를 얻을 수 있습니다. ]
D
및Z
병합 된 지점의 일부?