2012-02-24 11 views
57

Mam alias Git, który rozszerza się do:Git pokazać wszystkie branże (ale nie stashes) w dzienniku

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

Według man git log istnieje kilka podejrzanych opcji: --not i --branches; ale nie mogę sprawić, żeby działała poprawnie.

W jaki sposób należy edytować, aby ukryć skrytki?


FYI: jak na accepted question i comment moich .gitconfig alias teraz wygląda tak:

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

Odpowiedz

79

Zamiast robić --all a następnie starają się odfiltrować stashes, nie zawsze obejmują im na pierwszym miejscu:

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

Głównym problemem, który om próba ich odfiltrowania polega na tym, że jeśli skrytka jest ostatnim zatwierdzeniem w tej gałęzi (ponieważ nawet nie jest to head gałęzi, to wciąż jest jej najnowszym potomkiem), może ona odfiltrować całą gałąź z dziennik, który nie jest tym, czego potrzebujesz.

+2

Świetnie! Dodałbym '--tags' dla kompletności. – cYrus

+0

Podejrzewam, że '--tags' jest zbędny, ponieważ żaden tag nie powinien być potomkiem' głowy' gałęzi lub pilota, chociaż tego nie zweryfikowałem. –

+3

Właśnie wypróbowałem to: 'git checkout -b test'; dodano commit; 'git tag foo'; 'git checkout master'; 'git branch -D test'. Tag jest tam, ale nie będzie pokazany bez '--tags'. – cYrus

2

Zauważ, że Andrew's answer nie będzie działać za ukrywanie StGit1.) gałęzie <branch>.stgit (od wersji 0.15 StGit), które w przeciwnym razie miot wyjście czyni go bezużytecznym.

Obecnie używam następujące rozwiązanie:

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

1.) StGit ("St potwierdzony Git") zapewnia Quilt/MQ - jak funkcjonalność Git (tj. przesuwanie/otwieranie łat na/ze stosu).

1

Mój alias:

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

W tym przypadku będzie można korzystać z tych form bez pokazywania zapas:

  • git l dla bieżącej gałęzi
  • git l feature234 dla konkretnej branży
  • git l --all dla ogólnej historii

Z instrukcji:

--exclude = < glob wzór >

Nie zawierają pozycje literatury pasujących że następny --all, --branches, --tags, --remotes lub --glob rozważyłby w przeciwnym razie.

Powiązane problemy