병합 커밋없이 git 로그보기


88

특정 사용자가 만든 커밋을 보려고하는데 사용자가 수행 한 병합을 출력에서 ​​제거하고 싶습니다. 어떻게 할 수 있습니까?

을 사용하여 사용자의 커밋을 확인할 수 git log --author=<name>있지만 출력에서 ​​병합 커밋을 제거 할 수 없습니다.

추신 : 문제의 리포지토리의 워크 플로에서 병합 충돌이 발생하지 않으며, 모든 분기가 마스터로 병합되기 전에 리베이스되므로 출력에서 ​​병합 커밋을 제거하는 것이 안전하며 유사하게 두 기능 분기가 서로 병합되지 않습니다. 가능성.


2
병합에 충돌이있어 해결해야한다면 어떻게해야합니까?
Joe Phillips

2
@JoePhilllips 문제의 리포지토리의 워크 플로에서 발생하지 않는 모든 분기는 마스터로 병합하기 전에 리베이스됩니다.
mu 無

6
사용git log --no-merges
0xAX

1
@ 0xAX 답변으로 게시 해 주시겠습니까?
mu 無

답변:


133

사용하다

git log --author=<name> --no-merges

또한이 --first-parent옵션은 유용한 결과를 제공 할 수 있습니다.

--first-parent 병합 커밋을 볼 때 첫 번째 부모 커밋 만 따릅니다. 이 옵션은 특정 토픽 브랜치의 진화를 볼 때 더 나은 개요를 제공 할 수 있습니다. 토픽 브랜치로 병합하는 것은 수시로 업데이트 된 업스트림에 맞게 조정하는 경향이 있기 때문에이 옵션을 사용하면 가져온 개별 커밋을 무시할 수 있습니다. 그런 합병으로 당신의 역사. --bisect와 함께 사용할 수 없습니다.


심지어 좋네요 --pretty=format:"%h%x09%an%x09%ad%x09%s"
k1eran

1
@ k1eran이 커밋 본문을 자릅니다 (하나가 있다고 가정)
Erythros

1
@Erythros는 이해했으며 간결하고 읽을 수있는 커밋 요약을 얻는 것이 유용하다는 것을 알았습니다.
k1eran

또는 색상 및 그래프 포함log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --first-parent
Highmastdon

18

다음과의 병합을 생략 할 수 있습니다 --no-merges.

git log --no-merges --author=<name>

자세한 내용은 git log 맨 페이지 를 참조하십시오.


2
병합 커밋 만 제외됩니다. 그러나 해당 업스트림 브랜치 내부의 일반 커밋은 여전히 ​​표시됩니다.
Shiplu Mokaddim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.