Git reflog graph? - PullRequest
       6

Git reflog graph?

2 голосов
/ 08 июля 2019

Есть ли способ показать граф журнала git со ссылками на reflog, например mybranch@{N}? Это было бы полезно после перебазирования, чтобы увидеть предыдущую и текущую версии ветви в виде графика. В основном я хочу (я думаю) git log --graph --walk-reflogs mybranch, но это дает мне ошибку fatal: cannot combine --walk-reflogs with history-limiting options.

Я могу очень близко подойти к git log --graph --reflog mybranch, но это не показывает ссылки на reflog, такие как mybranch@{1}.

Может быть, это ограничение, так как вы не можете пройти по наследству и reflog одной командой? Тем не менее, похоже, что должен быть способ пройти список записей reflog или около того и передать эти ссылки с метками в git log --graph.

1 Ответ

3 голосов
/ 08 июля 2019

Может быть, это ограничение, поскольку вы не можете пройтись по наследству и reflog одной командой?

Совершенно верно.

Основная проблема здесьGit может добавлять эти декораторы меток (%d для обычных декораций или %gD для декораций селектора рефлогов) к коммитам, если он может найти декоратора.Чтобы позволить декораторам %d работать, Git всегда считывает все ветви, теги и другие ссылочные имена.Но чтобы %gD работал, Git должен прочитать записи reflog, и, если вы не используете --walk-reflogs (или -g для краткости), он вообще не читает записи reflog.Как только вы do используете -g, он читает рефлоги, но останавливает просмотр графика коммитов.

Нет фундаментальной причины, по которой Git не может прочитать все рефлоги, если и когда %gDпоявился в директивах форматирования, так что он может добавить эти декораторы, но это не так сегодня.

Существует отдельная, но не менее важная проблема, которая возникает, если и когда вы решите эту первую проблему: --graphне может быть объединено с --no-walk и --walk-reflogs подразумевает --no-walk (это отдельные внутренние функции обхода, и генерирующий граф код сильно зависит от использования средства просмотра истории, а не средства просмотра журнала).

(Лучшее, что вы можете сделать с текущим Git - это проанализировать вывод из git log и одновременно прочитать все значения reflog. Затем вы можете написать свой собственный код для добавления меток reflog.)

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