Я играю с Git изолированно на своей собственной машине, и мне трудно поддерживать ментальную модель всех моих ветвей и коммитов. Я знаю, что могу сделать, git log
чтобы увидеть историю коммитов, откуда я нахожусь, но есть ли способ увидеть всю топографию ветви, что-то вроде этих карт ASCII, которые, кажется, используются повсеместно для объяснения ветвей?
.-A---M---N---O---P
/ / / / /
I B C D E
\ / / / /
`-------------'
Такое ощущение, что кто-то придет и попытается забрать мой репозиторий, будет трудно точно понять, что происходит.
Я думаю, что на меня влияет потоковый браузер AccuRev ...
Ответы:
Используйте
git log --graph
илиgitk
. (Оба также принимают--all
, что покажет все ветви вместо только текущей.)Для названий ветвей и компактного вида попробуйте:
источник
--all
опцию и также помечает коммиты. Я также никогда не видел в выпадающем списке, что вы можете выбрать все ветви там.git log --graph --decorate --oneline
- показывает один коммит на строку, и украшает с именами веток.--all
опцию. Довольно удобно!--simplify-by-decoration
варианта.Я обычно использую
С цветами (если ваша оболочка Bash):
Это напечатает текстовое представление следующим образом:
(Вы можете просто использовать
git log --format=oneline
, но он свяжет сообщения коммитов с числами, что выглядит ИМХО менее привлекательно).Чтобы сделать ярлык для этой команды, вы можете отредактировать ваш
~/.gitconfig
файл:Однако, как замечает Содел Лобовое в комментариях, такую длинную команду форматирования трудно запомнить. Обычно это не проблема, так как вы можете поместить это в
~/.gitconfig
файл. Однако, если вам иногда приходится входить на удаленную машину, где вы не можете изменить файл конфигурации, вы можете использовать более простую, но более быструю версию:источник
--full-history
актуально только при использовании--simplify-by-decoration
или указании пути к файлу.У меня есть 3 псевдонима (и 4 псевдонима для быстрого использования), которые я обычно добавляю в свой
~/.gitconfig
файл:git lg
/git lg1
выглядит так:git lg2
выглядит так:и
git lg3
выглядит так:Следует отметить, что это не означает, что это решение для всех, это шаблон, который вы можете изменить, дополнить и исправить по своему вкусу. Если вы хотите использовать их, я рекомендую:
.gitconfig
,.gitconfig
s в будущем (или, конечно, в качестве альтернативного варианта управления вашими точечными файлами) .Примечание. Ответ скопирован и улучшен в ответе на stackoverflow.com/questions/1057564/pretty-git-branch-graphs, поскольку он гораздо более уместен здесь, чем был там. Оставьте копию другого вопроса по историческим причинам - сейчас он закрыт, а на ответ ссылается куча других ответов.
источник
%C(bold yellow)
с%C(auto)
за то, что различные цвета дляHEAD
, локальных и удаленных ветвей ( реф ).%w()
; таким образом, вы также можете правильно переносить строки или сообщения с многострочным коммитом, не мешая графику.--abbrev-commit
находится там, потому что 2-я и 3-я строки снабжены пробелами вручную, и я хотел быть абсолютно уверенным, что он будет использовать короткий SHA - так что лучше, чем потом сожалеть.--decorate
также там, потому что, хотя настройки Git по умолчанию делают то же самое, они могут быть настроены по-разному или по-разному в разных версиях Git - для них я абсолютно хочу украшение. В конечном счете, дополнительные / избыточные флаги здесь неплохие - это происходит в файле; это не то, что вы печатаете все время.lg1
&lg2
вы можете увидеть(origin/test_on_10.8)
показ удаленной ветви, а наlg2
скриншоте вы можете см.(HEAD -> master, origin/master, origin/HEAD)
показ как локальных, так и удаленных позицийmaster
филиала иHEAD
. Это соответствует тому, что делают популярные инструменты графического интерфейса для Git (gitk, SourceTree, TortoiseGit, Tower, Fork, GitX), хотя и с большей детализацией (некоторые инструменты GUI используют цветовое кодирование) .К любому из этих рецептов (на основе git log или gitk) вы можете добавить,
--simplify-by-decoration
чтобы свернуть неинтересные линейные части истории. Это делает намного больше видимой топологии сразу. Теперь я могу понять большие истории, которые были бы непостижимы без этой опции!Я чувствовал необходимость опубликовать это, потому что это не так хорошо известно, как должно быть. Его нет в большинстве вопросов о переполнении стека, касающихся визуализации истории, и мне потребовалось немало времени, чтобы найти его - даже после того, как я понял, что хочу этого! Я наконец нашел это в отчете об ошибках Debian . Первое упоминание о переполнении стека, по-видимому, было ответом Антуана Пелисса.
источник
--simplify-by-decoration
так ясно дает понять, что происходит.git log --graph --all --simplify-by-decoration
работает так же.--simplify-by-decoration
при добавлении n коммитов до / после каждого децентрализованного коммита (как-B
и-A
дляgrep
).Gitk
Иногда мне больно читать.Мотивировать меня, чтобы написать GitVersionTree .
источник
99,999% моего времени смотрят на историю,
git lg
а 0,001% - наgit log
.Я просто хочу поделиться двумя псевдонимами журнала, которые могут быть полезны (настроить из .gitconfig):
git lg
увидим текущую ветку истории.git hist
увидим всю ветку истории.источник
Взгляните на Gitkraken - кроссплатформенный графический интерфейс, который четко показывает топологию.
Вот краткий видеоурок о некоторых дополнительных функциях.
источник
Мне нравится
git log
делать с:(также с --all, для просмотра удаленных веток)
Работает с последними выпусками Git: выпущено с 1.6.3 ( четверг, 7 мая 2009 г. )
Вы также можете ограничить интервал отображения журнала (количество коммитов):
(показать только последние 5 коммитов)
Что мне не нравится в текущем выбранном решении:
Он отображал слишком много информации (когда я хочу только посмотреть на краткое резюме):
gitk
отлично, но вынуждает меня покинуть сессию оболочки для другого окна, тогда как отображение последних n коммитов достаточно часто.источник
Gitg - отличный инструмент для Linux, похожий на Gitx для OS X. Просто запустите «gitg» в командной строке где-то внутри древовидной структуры вашего хранилища (то же самое с gitx).
источник
gitg --all
, если вы хотите избежать осмотра в выпадающем меню.Я нашел "git-big-picture" довольно полезным: https://github.com/esc/git-big-picture
Он создает симпатичные 2D-графики, используя точку / график вместо довольно линейных, «одномерных» представлений, которые производят gitk и друзья. С опцией -i он показывает точки ветвления и коммиты слияния, но пропускает все промежуточное.
источник
Хороший веб-инструмент - неопрятный . Он работает на любой платформе, которую поддерживает node.js & git. Есть видео о том, как это работает для тех, кому такие вещи легче читать, чем читать ...
источник
Посмотрите на BranchMaster .
Я написал это, чтобы визуализировать сложную структуру веток, сворачивая все коммиты между ними в одну строку. Цифры указывают количество коммитов.
источник
Никто не упомянул
tig
? Это не сворачивает ветви как "BranchMaster", но ...Это быстро, работает в терминале.
Поскольку это так быстро (+ управление с клавиатуры), вы получаете отличный UX, это почти как мое "
ls
" для каталогов, содержащих git-репозитории.https://jonas.github.io/tig/
Имеются обычные ярлыки,
/
для поиска и т. Д.(ps. это терминал на фоне этого скриншота, сейчас он выглядит лучше, но мой компьютер отказывается делать скриншот, извините)
(pps. Я тоже использую gitkraken и у меня действительно четкие визуализации, но он намного тяжелее
tig
)источник
У Tortoise Git есть инструмент под названием «График ревизий». Если вы работаете в Windows, это так же просто, как щелкнуть правой кнопкой мыши по вашему репозиторию -> Tortoise Git -> Revision Graph.
источник
Хихикает рисует действительно хорошие графики.
источник
Я использую следующие псевдонимы.
Он содержит больше информации в цветовой схеме, чем псевдонимы, которые я видел выше. Это также кажется довольно распространенным явлением, поэтому у вас может быть шанс, что он будет существовать в окружении другого человека или упомянуть об этом в разговоре без объяснения причин.
Со скриншотами и полным описанием здесь: http://blog.kfish.org/2010/04/git-lola.html
источник
Для пользователей Mac: закажите (не каламбур) бесплатный инструмент с открытым исходным кодом GitUp: http://gitup.co/
Мне нравится способ отображения графиков, он понятнее, чем некоторые другие инструменты, которые я видел.
Проект находится здесь: https://github.com/git-up/GitUp
источник
У меня есть этот
git log
псевдоним~/.gitconfig
для просмотра истории графа:С псевдонимом на месте,
git l
покажет что-то вроде этого:В Git 2.12 + вы даже можете настроить цвета линий графика, используя
log.graphColors
опцию конфигурации.Что касается формата логов, то он похож
--oneline
на добавление имени автора (с уважением.mailmap
) и относительной даты автора . Обратите внимание, что%C(auto)
синтаксис, который говорит Git использовать цвета по умолчанию для хэша коммита и т. Д., Поддерживается в Git> = 1.8.3 .источник
Я нашел это сообщение в блоге, которое показывает краткий путь:
Я обычно создаю псевдоним для вышеуказанной команды:
и просто просто использовать
gl
.Вы также можете добавить псевдоним в конфигурацию git. Откройте
~/.gitconfig
и добавьте следующую строку в [псевдоним]и используйте это так:
git lg
источник
Мой личный любимый псевдоним через .gitconfig:
источник
Для тех, кто использует текстовый редактор VSCode , рассмотрим расширение Git History от D. Jayamanne:
источник
Gitx также фантастический инструмент визуализации, если вы оказались на OS X.
источник
Еще одна команда git log. Этот с фиксированной шириной столбцов :
источник
Проверьте
SmartGit
. Это очень напоминает мне визуализацию ветки TortoiseHg, и это бесплатно для некоммерческого использования.источник
В Windows есть очень полезный инструмент, который вы можете использовать: расширения git. Это графический инструмент, который делает операции с Git очень простыми.
Также это с открытым исходным кодом.
http://gitextensions.github.io
источник
Я пробовал,
--simplify-by-decoration
но все мои слияния не отображаются. Поэтому я вместо этого просто обрезаю строки без символов «\» и «/» в заголовках, сохраняя при этом строки со знаком «(», указывающим ветви сразу после этого. При отображении истории ветвей я вообще не заинтересован в комментариях к коммитам, поэтому Я тоже их удаляю и получаю следующий псевдоним оболочки.источник
мы можем сделать это более сложным?
Как насчет простого журнала git --all --decorate --oneline --graph (помните A Dog = --All --Украсить --Oneine --Graph)
источник
Официальный сайт Git привлек некоторые сторонние инструменты графического интерфейса платформы. Нажмите здесь Инструменты git GUI для платформы Linux
Я использовал
gitg
иGitKraken
для платформы Linux. Оба хорошо, чтобы понять дерево коммитовисточник
Самые рейтинговые ответы, показывающие
git log
команды как любимые решения.Если вам нужен табличный , скажем, реальный столбец, такой как вывод, вы можете использовать свои классные команды git log с небольшими изменениями и некоторыми ограничениями с помощью .gitconfig alias.bly фрагмента ниже.
Модификации:
%><(<N>[,ltrunc|mtrunc|trunc])
перед каждым коммитом фиксации--color
опцию для цветного выводаОграничения:
если график не должен быть помещен в первый столбец, вы не можете добавить другие символы для украшения, как
(committer:
,<
и>)
как в...%C(dim white)(committer: %<(15,trunc)%cn%<(25,trunc)<%ce>)%C(reset)...
чтобы получить табличный вывод
Пример взят с этого сайта:
будет с
^
разделителем и без добавленных символовкоторый сравнивает как
или с перемещением графика в столбец 5
Для этого добавьте следующее в ваш .gitconfig и назовите псевдоним журнала с помощью
git tably YourLogAlias
Это более или менее только часть моего ответа https://stackoverflow.com/a/61487052/8006273, где вы можете найти более глубокие объяснения, но здесь тоже хорошо подходит этот вопрос.
источник