Come posso mostrare il nome dei rami in `git log`?


216

Come posso mostrare il nome dei rami nell'output di git log?

Ad esempio, git log --graph --allottengo una buona panoramica dei commit, ma mi confondo quale linea è master e quale è il mio ramo per esempio.


1
Praticamente, mostrare i nomi delle intestazioni o dei tag collegati sembra essere già fatto di default da qualche recente gitaggiornamento.
underscore_d

Risposte:


321

Prova l'opzione decorare.

git log --graph --all --decorate

Annota i commit indicati da tag o rami.


42
Con --prettyte puoi usare %ddove vuoi le 'decorazioni'.
CB Bailey,

4
@noli: cosa ti aspetti che mostri? Non tutti i commit sono suggerimenti di filiale.
CB Bailey,

9
@noli git memorizza solo il nome del ramo nel commit più recente del ramo (il suggerimento). Tutti i commit nella storia sono uguali e anonimi. Se vuoi rami con nome in modo che ogni commit porti il ​​nome del ramo, puoi usare Mercurial.
Sampo Smolander,

7
@CharlesBailey: mi piacciono i colori degli arbitri git log --graph --all --oneline --decorate. Ho un alias git graphche usa --pretty(per mostrare anche altre cose, come autore e data), ma %dnon mi dà i colori di --decorate. Per ora uso il giallo per tutti i miei riferimenti, sai come posso lasciare che --prettyla %dstringa erediti i colori di --decorate?
Gauthier,

3
@Gauthier Se ti piace avere i colori predefiniti nei tuoi --prettyformati, aggiungi %C(auto)prima dell'elemento ciò che dovrebbe essere colorato. ad es.git log --pretty=format:"%cd %h %cn %s %C(auto)%d"
Radon8472,

7

Stavo cercando qualcosa di simile a questo, ma volevo sapere quale ramo è stato fatto un cambiamento. Speriamo che questa risposta possa essere utile anche agli altri.

Sto studiando un rischio con la blackboxcrittografia, in cui un repository e i suoi rami / tag potrebbero non essere disponibili per gli attuali adminsquando un numero sufficiente di utenti lascia un progetto e la keyringsdirectory non è stata basata religiosamente al di fuori del master)

Ho scoperto che la risposta di seguito è stata utile dove la keyringsdirectory non è stata aggiornata dal master ...

Fondamentalmente l'aggiunta --sourceera ciò di cui avevo bisogno per mostrare i rami / tag. L'aggiunta --name-onlymostrerà anche quale file è stato effettivamente modificato.

cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings

Un'altra risposta utile: come mostrare git log con il nome del ramo


Per me, --sourcesolo dà HEADper tutti gli impegni. In combinazione con --allquesto sembra distinguere tra diversi rami, ma le informazioni visualizzate non sono quelle che mi aspetto: per i commit che ho fatto master, invece di ottenere refs/heads/master, ottengo un ramo privato ( refs/remotes/origin/…). Ho il sospetto che fusioni e / o nuove filiali facciano Gitperdere informazioni sulla cronologia.
vinc17,

Invece di --all, posso filtrare i rami con --branches --remotes=<pattern>, ma non appena due rami vengono uniti insieme, Git non ha più le informazioni su quale è stato eseguito il commit al termine.
vinc17,

1

Se ti capita di usare oh-my-zsh come terminale, allora sono disponibili molti alias git. Tutto ciò può essere visto nel loro repository oh-my-zsh / plugins / git . Se non usi questo terminale, puoi semplicemente prendere gli alias e incollare quelli che ti piacciono nel tuo ambiente.

La risposta accettata presenta il git log --graph --all --decoratecomando, che è disponibile come glggaalias in oh-my-zsh.

Personalmente preferisco l' glodsalias che si traduce in:

git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short
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.