Git pokazuje wszystkie gałęzie (ale nie skrytki) w dzienniku


84

Mam alias Git, który rozwija się do:

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

Zgodnie z tym, man git logistnieje kilka podejrzanych opcji: --noti --branches; ale nie mogę sprawić, by działało poprawnie.

Jak mam to edytować, aby ukryć skrytki?


Do Twojej wiadomości : zgodnie z zaakceptowanym pytaniem i komentarzem, mój .gitconfigalias wygląda teraz tak:

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

Odpowiedzi:


125

Zamiast robić, --alla następnie próbować odfiltrować skrytki, nigdy nie uwzględniaj ich w pierwszej kolejności:

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

Głównym problemem, który pojawia się przy próbie ich późniejszego odfiltrowania, jest to, że jeśli schowek jest najnowszym zatwierdzeniem w tej gałęzi (ponieważ nawet jeśli nie jest headto gałąź, nadal jest jej najnowszym potomkiem), może faktycznie odfiltrować całą gałąź z dziennika, co nie jest tym, czego chcesz.


2
Świetny! Dodałbym --tagsdla kompletności.
cYrus,

Podejrzewam, że --tagsjest zbędny, ponieważ żaden tag nie powinien być potomkiem headoddziału lub pilota, chociaż tego nie zweryfikowałem.
Andrew Marshall,

3
Właśnie próbowałem tego git checkout -b test:; dodał zatwierdzenie; git tag foo; git checkout master; git branch -D test. Znacznik istnieje, ale bez niego nie będzie wyświetlany --tags.
cYrus,

2
Jeden mały dodatek - należy dodać HEADna koniec. W przeciwnym razie, jeśli jesteś w odłączonym trybie HEAD i żadne inne odniesienie nie wskazuje na zatwierdzenie HEAD, nie zobaczysz tego na wykresie.
mziwisky

6

Mój alias:

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

W takim przypadku będziesz mógł skorzystać z tych formularzy bez pokazywania skrytki:

  • git l dla bieżącej branży
  • git l feature234 dla określonej branży
  • git l --all dla całej historii

Z instrukcji:

--exclude = <wzorzec glob>

Nie dołączaj referencji pasujących do następnych --all, --branches, --tags, --remotes lub --glob, które w innym przypadku rozważałyby.


4
Zauważ, że kolejność parametrów ma znaczenie: --all --exclude=refs/stashnadal będzie zawierać skrytkę, a --exclude=refs/stash --allpoprawnie ją wykluczy.
Michaił Burshteyn

4

Należy zauważyć, że odpowiedź Andrzeja nie będzie działać dla ukrycia StGit 1) gałęzie <branch>.stgit(od wersji 0.15 StGit), które w przeciwnym razie miot wyjście czyni go bezużytecznym.

Obecnie korzystam z następującego rozwiązania:

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

1.) StGit ( " St potwierdzony Git ") zapewnia kołdrę / mq - jak funkcjonalność Git (tj pchania / trzaski łatki do / ze stosu).


Rozważ użycie --exclude. Na przykład:git log --graph --exclude=refs/heads/*.stgit --exclude=refs/patches/* --exclude=refs/stash --all
gavenkoa
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.