git 커밋 기록이 다음과 같다고 가정합니다.
A---B---C---D---E---F master
\ /
X---Y---Z topic
마스터, AF에 대한 커밋 만 git list에 표시 할 수 있습니까? 즉, 커밋이 병합 된 브랜치에있는 경우 표시하고 싶지 않습니다.
답변
git log
옵션 --first-parent
이 있으므로 topic
기록을 얻을 수 없습니다 .
에서 합병 master
의 master
커밋은 병합의 첫 조상이다. Git 로그를 사용하면 –first-parent를 사용하여 해당 커밋 만 표시 할 수 있으므로 올바른 내용을 얻을 수 있습니다.
답변
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 이름을 흐리게 처리했지만 도구에서 첫 번째 부모를 사용하는 방법에 대한 아이디어를 얻을 수 있습니다. ]
- Git 확장
- Open Git Extension-> Checkout the feature branch you want to see the commits, there are a option to select first commits as shown in Image :
- 거북이 힘내
- 저장소 폴더 열기-> Tortoise Git에서 로그 표시-> 브랜치를 체크 아웃하고 이미지에 표시된대로 첫 번째 커밋을 선택합니다.
답변
작동하지 않습니까?
git log master
git log --stat master