2012-02-24 21 views
57

ho un alias Git che si espande a:Git mostra tutti i rami (ma non stashes) nel registro

git log --graph --oneline --all --decorate 

Secondo man git log ci sono un paio di opzioni sospette: --not e --branches; ma non riesco a farlo funzionare correttamente.

Come dovrei modificarlo per nascondere le fasce?


FYI: secondo le accepted question e comment miei .gitconfig alias appare come segue:

[alias] 
    l = log --branches --remotes --tags --graph --oneline --decorate --notes HEAD 

risposta

79

Invece di fare --all e poi cercare di filtrare i stashes, non mai comprendono in primo luogo:

git log --branches --remotes --tags --graph --oneline --decorate 

Il problema principale che si pone om che proviamo a filtrarli in seguito è che se lo stash è l'ultimo commit su quel ramo (perché anche se non è lo head del branch, è ancora il discendente più recente), può effettivamente filtrare l'intero branch da il log, che non è quello che vuoi.

+2

Grande! Aggiungerei '--tags' per completezza. – cYrus

+0

Sospetto che '--tags' sia ridondante, dal momento che nessun tag dovrebbe mai essere un discendente del' head' di un ramo o di un remoto, sebbene non l'abbia verificato. –

+3

Ho appena provato questo: 'git checkout -b test'; aggiunto un commit; 'git tag foo'; 'git checkout master'; 'git branch -D test'. Il tag è lì ma non verrà mostrato senza '--tags'. – cYrus

2

Nota che Andrew's answer non avrebbe funzionato per nascondere StGit1.) rami <branch>.stgit (da StGit versione 0.15) che altrimenti lettiera l'uscita rendendolo inutilizzabile.

Attualmente io uso la seguente soluzione:

$ git log --graph --oneline --decorate \ 
    $(git for-each-ref --format="%(refname)" refs/heads/ refs/remotes/ | 
    grep -v "\.stgit$") 

1.) StGit ("St completamente riscontrato Git") fornisce Quilt/mq - funzionalità come a Git (vale a dire spingere/scattare patch a/da una pila).

1

mio alias:

[alias] 
    l = log --oneline --decorate --graph --exclude=refs/stash 

In questo caso si sarà in grado di utilizzare queste forme senza mostrare la scorta:

  • git l per il ramo corrente
  • git l feature234 per un ramo specifico
  • git l --all per la cronologia complessiva

Dal manuale:

--exclude = < glob modello >

Non includere arbitri corrispondenti che la prossima --all, --branches, --tags, --remotes , o --glob prenderebbe in considerazione altrimenti.

Problemi correlati