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.


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.


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.


2
Isso exclui apenas os commits de mesclagem. Mas os commits normais dentro desse branch upstream ainda são visíveis.
Shiplu Mokaddim
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.