Git показує всі гілки (але не схованки) у журналі


84

У мене є псевдонім Git, який розширюється до:

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

На думку man git logє кілька підозрілих варіантів: --notі --branches; але я не можу змусити це працювати належним чином.

Як мені відредагувати це, щоб приховати схованки?


FYI : згідно з прийнятим запитанням та коментарем мій .gitconfigпсевдонім тепер виглядає так:

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

Відповіді:


125

Замість того, щоб робити, --allа потім намагатися відфільтрувати схованки, ніколи не включайте їх спочатку:

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

Основна проблема, яка виникає при спробі відфільтрувати їх згодом, полягає в тому, що якщо схованка є останнім комітом у цій гілці (оскільки, хоча це не headгілка, це все ще найновіший її нащадок), вона може фактично відфільтрувати всю гілку з журналу, а це не те, що ви хочете.


2
Чудово! Додав би --tagsдля повноти.
cYrus

Я підозрюю, --tagsщо є зайвим, оскільки жоден тег ніколи не повинен бути нащадком headгілки або віддаленого, хоча я цього не перевірив.
Ендрю Маршалл,

3
Щойно спробував це git checkout -b test:; додано коміт; git tag foo; git checkout master; git branch -D test. Тег є, але без нього він не відображатиметься --tags.
cYrus

2
Одне невелике доповнення - ви повинні додати HEADдо кінця. В іншому випадку, якщо ви перебуваєте у від'єднаному режимі HEAD і жодних інших посилань не вказує на коміт HEAD, ви не побачите цього на графіку.
mziwisky

6

Мій псевдонім:

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

У цьому випадку ви зможете використовувати ці форми, не показуючи схованку:

  • git l для поточної гілки
  • git l feature234 для конкретної галузі
  • git l --all для загальної історії

З посібника:

--exclude = <шаблон глобуса>

Не включайте посилання, які відповідають наступним --all, - Branches, --tags, --remotes або --glob.


4
Зверніть увагу, що порядок параметрів має значення: --all --exclude=refs/stashвсе одно включатиме схованку, тоді як --exclude=refs/stash --allправильно її виключатиме.
Михайло Бурштейн

4

Зверніть увагу , що відповідь Ендрю не працюватиме для приховування StGit 1.) гілки <branch>.stgit(від StGit версії 0.15) , які в іншому випадку сміття на виході , що робить його непридатним для використання.

В даний час я використовую таке рішення:

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

1.) StGit (" St acked Git ") забезпечує функціональність, схожу на Quilt / mq, для Git (тобто штовхання / вискакування патчів до / зі стеку).


Подумайте про використання --exclude. Подобається:git log --graph --exclude=refs/heads/*.stgit --exclude=refs/patches/* --exclude=refs/stash --all
gavenkoa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.