Visualizza il log git senza merge commit


89

Sto cercando di visualizzare i commit effettuati da un utente specifico e desidero rimuovere dall'output eventuali unioni eseguite dall'utente. Come posso farlo?

Posso verificare i commit di un utente che utilizza git log --author=<name>, ma non posso rimuovere i commit di unione nell'output.

PS: i conflitti di unione non si verificano nel flusso di lavoro del repository in questione, tutti i rami vengono ribasati prima di unirsi al master, quindi è sicuro rimuovere i commit di unione dall'output e, allo stesso modo, due rami di funzionalità non vengono uniti l'uno con l'altro innalzamento la possibilità.


2
E se l'unione avesse un conflitto e lui dovesse risolverlo?
Joe Phillips

2
@JoePhilllips Ciò non accade nel flusso di lavoro del repo in questione, tutti i rami vengono ribasati prima di unirsi al master.
mu 無

7
utilizzaregit log --no-merges
0xAX

1
@ 0xAX Puoi pubblicarlo come risposta, lo accetterò.
mu 無

Risposte:


138

uso

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

Inoltre l' --first-parentopzione può fornire risultati utili per te:

--first-parent Segue solo il primo commit genitore quando vede un commit di unione. Questa opzione può fornire una migliore panoramica durante la visualizzazione dell'evoluzione di un particolare ramo di un argomento, poiché le fusioni in un ramo di un argomento tendono a riguardare solo l'adeguamento a monte aggiornato di volta in volta, e questa opzione ti consente di ignorare i singoli commit portati a la tua storia da una tale fusione. Non può essere combinato con --bisect.


ancora più bello con --pretty=format:"%h%x09%an%x09%ad%x09%s"
k1eran

1
@ k1eran questo tronca il corpo del commit (supponendo che ce ne sia uno)
Erythros,

1
@Erythros ha capito e trovo utile ottenere un riassunto conciso e leggibile dei commit.
k1eran

O compresi i colori e il graficolog --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --first-parent
Highmastdon

19

Puoi omettere le fusioni con --no-merges:

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

Vedi la manpage git log per i dettagli.


2
Questo esclude solo i commit di unione. Ma i commit normali all'interno di quel ramo a monte sono ancora visibili.
Shiplu Mokaddim
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.