Не вдається показати дерево Git в терміналі


439

Стара стаття Killswitchcollective.com від 30 червня 2009 року містить такі входи та результати

git co master
git merge [your_branch]
git push

upstream    A-B-C-D-E            A-B-C-D-E-F-G
                 \        ---->               \
your branch       C-D-E                        G

Мене цікавить, як ви отримуєте деревоподібний вид комісій у своєму терміналі, не використовуючи Gitk або Gitx в OS / X.

Як ви можете отримати деревоподібний вид комісій у терміналі?


2
Питання не важливо, але ця стаття вже не доступна. Кешована копія доступна через Інтернет-архів: web.archive.org/web/20110831142839/http://…
Алан Де Смет

Відповіді:


795

Як ви можете отримати деревоподібний вид комісій у терміналі?

git log --graph --oneline --all

це гарний початок.

Можливо, ви отримаєте якісь дивні листи. Вони є кодами ASCII для кольорів та структури. Щоб вирішити цю проблему, додайте наступне до свого .bashrc:

export LESS="-R"

таким чином, що вам не потрібно використовувати фільтр ASCII Тіга від

git log --graph --pretty=oneline --abbrev-commit | tig   // Masi needed this 

У статті на основі тексту граф з Git-готовий містить інші варіанти:

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

git журнал графік

Щодо статті, яку ви згадуєте, я б відповів відповіді Pod : спеціальний хенд-мейд.


Якуб Нарбський згадує у коментарі tig , інтерфейс текстового режиму для git. Дивіться їх випуски .
Вона додала в --graphваріант ще в 2007 році.


1
Я просто перевірив це на моїй репо. Це працює, але я перебуваю у Windows з MSysGit1.6.3.
VonC

files.getdropbox.com заблокований тут на роботі :( я побачу вашу фотографію приблизно через одну годину, час дістатися додому.
VonC

@Vonc: Тепер я набрав дві для першої команди. Я отримую аналогічний вигляд, як на малюнку для другої команди.
Лео Леопольд Герц 준영

9
Існує також 'tig', текстовий інтерфейс для git (з використанням ncurses), який мав перегляд графічної історії в терміналі до того, як була опція '--graph' для git-log.
Якуб Нарубський

2
Я також вважаю --decorateнезамінним на такому дисплеї - він показує, що ви посилаєте назви (гілки, віддалені та локальні) поряд із скороченим іменем фіксації.
Метт Енрайт

312

Рішення - створити псевдонім у своєму .gitconfigтелефоні та запросити його легко:

[alias]
    tree = log --graph --decorate --pretty=oneline --abbrev-commit

І коли ви зателефонуєте наступному разу, ви будете використовувати:

git tree

Щоб помістити його у ~ / .gitconfig, не редагуючи його, ви можете:

git config --global alias.tree "log --graph --decorate --pretty=oneline --abbrev-commit"  

(Якщо ви не використовуєте --global, він помістить його в .git / config вашої поточної репо.)


1
Як це не псевдонім за замовчуванням? Я думаю, це зробить CLI Git трохи менш нахабним для використання, і ми цього не можемо мати ...
Timmmm

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

Візуальне дерево з включеними назвами гілок.

Використовуйте це, щоб додати його як псевдонім

git config --global alias.tree "log --oneline --decorate --all --graph"

Ви називаєте це

git tree

Гіт дерево


2
Дуже приємно, цей. Я використовую його в поєднанні з less -Sописаним тут способом , щоб запобігти обертання дерева обернутими лініями.
djvg

60

tig

Якщо ви хочете інтерактивне дерево, ви можете використовувати tig. Його можна встановити brewна OSX та apt-getв Linux.

brew install tig
tig

Ось що ви отримуєте:

введіть тут опис зображення


Чи можете ви отримати таке дерево, як зараз у відповіді VonC від Tig? Ми використовуємо Tig у відповіді VonC лише як фільтр Ascii.
Лео Леопольд Герц 준영

4

Зберігання коротких команд полегшить запам'ятовування:

git log --graph --oneline

1

Я б запропонував кожному записати повну команду

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

а не створювати псевдонім.

Добре ввести команди в голову, щоб ви знали це напам’ять, тобто не залежати від псевдонімів, коли ви міняєте машини.


2
Це насправді git log --all --decorate --oneline --graphпісля мнемоніка git log a dog;)
VonC

@VonC Кінцевий результат той самий. У всякому разі, я з вами згоден. Дякуємо за відгук.
Саксофоніст

Так, саме те, що смайлик ;)наприкінці мого попереднього коментаря намагався (недосконало) передати: ви можете використовувати цей варіант у будь-якому бажаному порядку. Мені просто здається, що "записувати собаку" смішним :)
VonC

1
Або ви могли б scp ~/.bashrc root@remote:~/і ваші псевдоніми швидко перебратися.
Адміні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.