Ver git log sem mesclar commits

88

Estou tentando exibir os commits feitos por um usuário específico e desejo remover da saída quaisquer mesclagens feitas pelo usuário. Como posso fazer isso?

Posso verificar os commits de um usuário usando git log --author=<name>, mas não consigo remover os commits de mesclagem na saída.

PS: Conflitos de mesclagem não acontecem no fluxo de trabalho do repo em questão, todas as ramificações são realocadas antes da mesclagem no master, então é seguro remover os commits de mesclagem da saída e, da mesma forma, duas ramificações de recursos não são mescladas uma com a outra aumentando a possibilidade.

mu 無
fonte
2
E se a fusão tivesse um conflito e ele tivesse que resolvê-lo?
Joe Phillips
2
@JoePhilllips Isso não acontece no fluxo de trabalho do repo em questão, todos os branches são realocados antes de serem mesclados no master.
mu 無
6
usogit log --no-merges
0xAX
1
@ 0xAX Você pode postar isso como uma resposta, eu aceitarei.
mu 無

Respostas:

133

usar

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

Além disso, a --first-parentopção pode fornecer resultados úteis para você:

--first-parent Siga apenas o primeiro commit pai ao ver um commit de mesclagem. Esta opção pode fornecer uma visão geral melhor ao visualizar a evolução de um ramo de tópico específico, porque mesclagens em um ramo de tópico tendem a ser apenas sobre o ajuste para upstream atualizado de tempos em tempos, e esta opção permite que você ignore os commits individuais trazidos para sua história por tal fusão. Não pode ser combinado com --bisect.

0xAX
fonte
ainda melhor com --pretty=format:"%h%x09%an%x09%ad%x09%s"
k1eran 01 de
1
@ k1eran isso trunca o corpo do commit (presumindo que haja um)
Erythros
1
@Erythros entendeu, e acho útil obter um resumo conciso e legível dos commits.
k1eran de
Ou incluindo cores e gráficolog --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --first-parent
Highmastdon
18

Você pode omitir mesclagens com --no-merges:

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

Veja a página de manual do git log para detalhes.

morxa
fonte
2
Isso exclui apenas os commits de mesclagem. Mas os commits normais dentro desse branch upstream ainda são visíveis.
Shiplu Mokaddim