Вывод ветки git в дерево как мода - PullRequest
116 голосов
/ 11 марта 2010

Прямо сейчас, когда я набираю "git branch"

перечисляет мои ветви в произвольном порядке.

Что бы я предпочел, было бы, если бы «git branch» перечислял мои выходные данные в виде дерева, например fasion, что-то вроде:

master
|-- foo
  |-- foo1
  |-- foo2
|-- bar
  |-- bar4

Где здесь, foo & bar были отделены от мастера; foo1 и foo2 были разветвлены от foo; bar4 был разветвлен от bar.

Это легко сделать?

[Только утилиты командной строки. Это должно вписаться в мой рабочий процесс zsh / vim.]

Ответы [ 6 ]

148 голосов
/ 11 марта 2010

Ответ ниже использует git log:

Я упомянул похожий подход в 2009 году: « Невозможно отобразить дерево Git в терминале »:

git log --graph --pretty=oneline --abbrev-commit

Но полный текст, который я использовал, находится в " Как отобразить имя тега и название ветви с помощью git log --graph " (2011):

git config --global alias.lgb "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' --abbrev-commit --date=relative --branches"

git lgb

Оригинальный ответ (2010)

git show-branch --list приближается к тому, что вы ищете (с заказом топо)

--topo-order

По умолчанию ветви и их коммиты отображаются в обратном хронологическом порядке.
Эта опция заставляет их отображаться в топологическом порядке (то есть, потомки фиксируются перед их родителями).

Но инструмент git wtf может тоже помочь . Пример:

$ git wtf
Local branch: master
[ ] NOT in sync with remote (needs push)
    - Add before-search hook, for shortcuts for custom search queries. [4430d1b] (edwardzyang@...; 7 days ago)
Remote branch: origin/master (git@gitorious.org:sup/mainline.git)
[x] in sync with local

Feature branches:
{ } origin/release-0.8.1 is NOT merged in (1 commit ahead)
    - bump to 0.8.1 [dab43fb] (wmorgan-sup@...; 2 days ago)
[ ] labels-before-subj is NOT merged in (1 commit ahead)
    - put labels before subject in thread index view [790b64d] (marka@...; 4 weeks ago)
{x} origin/enclosed-message-display-tweaks merged in
(x) experiment merged in (only locally)

NOTE: working directory contains modified files

git-wtf показывает вам:

  • Как ваша ветка связана с удаленным репо, если это ветка отслеживания.
  • Как ваша ветвь связана с ветвями, не относящимися к функциям ("версия"), если это ветвь функций.
  • Как ваша ветка связана с ветками функций, если это ветка версии
125 голосов
/ 15 марта 2012

Это не совсем то, что вы просили, но

git log --graph --simplify-by-decoration --pretty=format:'%d' --all

неплохо справляется. Он также показывает теги и удаленные ветки. Это может быть не желательно для всех, но я считаю это полезным. --simplifiy-by-decoration это большой трюк для ограничения показанных ссылок.

Я использую аналогичную команду для просмотра моего журнала. Я смог полностью заменить свое использование gitk этим:

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

Я использую его, включив эти псевдонимы в мой файл ~ / .gitconfig:

[alias]
    l = log --graph --oneline --decorate
    ll = log --graph --oneline --decorate --branches --tags
    lll = log --graph --oneline --decorate --all

Редактировать: Обновлены предлагаемые команды журнала / псевдонимы для использования более простых флагов параметров.

10 голосов
/ 30 июля 2014

В следующем примере также показаны коммит-родители:

git log --graph --all \
--format='%C(cyan dim) %p %Cred %h %C(white dim) %s %Cgreen(%cr)%C(cyan dim) <%an>%C(bold yellow)%d%Creset'
10 голосов
/ 12 октября 2011

Вы можете использовать инструмент под названием gitk.

2 голосов
/ 27 февраля 2019

Проверено на Ubuntu:

sudo apt install git-extras
git-show-tree

Это производит эффект, подобный 2 наиболее одобренным ответам здесь.

Источник: http://manpages.ubuntu.com/manpages/bionic/man1/git-show-tree.1.html


Кроме того, если у вас установлен arcanist , arc flow показывает красивое дерево зависимостей вышестоящих зависимостей (то есть: которые были установлены ранее через arc flow new_branch или вручную через git branch --set-upstream-to=upstream_branch).

0 голосов
/ 26 мая 2019

Для тех, кто использует Github, у них есть ветка Network Viewer , которая кажется легче читать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...