Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
Добрый день.
Имею следующую проблему.
Есть репозиторий. В нём 3 ветки.
Структура вот такая.

Проблема в том, что и консольный git log, и GUI'и - все показывают сугубо в виде одной ветки.

И я не пойму, что я делаю не так. Как мне посмотреть историю в виде, подобном тому, что на первой картинке?
Имею следующую проблему.
Есть репозиторий. В нём 3 ветки.
Структура вот такая.

Проблема в том, что и консольный git log, и GUI'и - все показывают сугубо в виде одной ветки.

И я не пойму, что я делаю не так. Как мне посмотреть историю в виде, подобном тому, что на первой картинке?
-
-
21.04.2020 в 22:59консоль растяни в ширину на 140+ символов
-
-
22.04.2020 в 00:23-
-
22.04.2020 в 10:44• Оно задублировало 1-й коммит, после которого пошла вторая ветка.
• "Добавлена функция применения правил" - отображено как отход в сторону. Хотя там просто комментарий подправил, т.к. правил несколько типов.
Такие дела.
Если что, ответвления у меня в следующих местах.
• Вторая ветка отходит от мастера и начинается с коммита "Добавлен пример для проверки функционала".
• Третья ветка отходит от второй и начинается с коммита "Добавлена функция декорирования токенов".
-
-
22.04.2020 в 10:53git log --graph показывает что у тебя в репозитории есть НА САМОМ ДЕЛЕ
если это не соответствует твоим ожиданиям о трёх ветках, значит, ты что-то делал не так, и никаких трёх веток у тебя там нет
"Добавлена функция применения правил" - отображено как отход в сторону
это висячий коммит (на него не указывает ни одна ветвь), который будет вскоре утерян (сожран гитовским сборщиком мусора)
гит не тривиальный в использовании, потихоньку разбирайся на своих ошибках
-
-
22.04.2020 в 10:58отображать дерево консольным гитом - это совсем на безрыбье )))
-
-
22.04.2020 в 10:58-
-
22.04.2020 в 11:04А отображает всё равно всё одной веткой.
* Начинаю подозревать, что дело в том, как у меня организованы ветки сейчас.
Т.е. у меня пока всё линейно, параллельных коммитов в разных ветках нет.
Т.е. в master не было коммитов после ухода на вторую ветку.
А во второй - не было коммитов после ухода на третью.
Возможно из-за этого оно всё линейно, в одну ветку отображает.
Но это пипец неудобно, т.к. не можешь посмотреть, какие коммиты какой ветке принадлежат.(
-
-
22.04.2020 в 11:08всё с ветками у тебя правильно, у тебя просто все ветки пустые
а висячий коммит - это видимо коммит, от которого ты отказался (это версия до редактрования коммента), и это правильно, что его съедят
-
-
22.04.2020 в 11:13вот на твоём рисунке ты нарисовал зелёную линию, идущую вправо
а куда она идёт?
в гите все линии идут от одного коммита к другому
линия не может идти в никуда, поэтому гит не рисует такую линию
-
-
22.04.2020 в 11:16если это не соответствует твоим ожиданиям о трёх ветках, значит, ты что-то делал не так, и никаких трёх веток у тебя там нет
А git говорит, что есть.)
это висячий коммит
Да это я в курсе. Я там через --amend комментарий ко коммиту корректировал, видимо оно его и породило.
На него мне пофих, т.к. по содержимому он идентичен следующему, у которого коммент правильный.
многочисленные гуёвые гит-клиенты красиво рисуют ветки
Ну я вот и начал с гуёвых. Только там та же проблема.
В консоли попытался на случай, если гуёвые глючат.
ты, перед тем как вносить изменения в какую-то ветку, не переключаешься на неё, а вносишь изменения в текущий HEAD
Если бы это было так, все коммиты должны были бы быть в мастере, не так ли?
-
-
22.04.2020 в 11:22или вот ты работал в ветке, а потом замёрджил её в мастер. что должен считать гит: что эта ветка осталась или что она исчезла? рисовать её или нет в сегодняшнем дне?
короче, умершие ветки не тянутся, а остаются там где померли
и это логично
-
-
22.04.2020 в 11:22ты считаешь пустую ветку веткой, а гит её веткой не считает, потому что она пустая )))
вот на твоём рисунке ты нарисовал зелёную линию, идущую вправо
а куда она идёт?
в гите все линии идут от одного коммита к другому
линия не может идти в никуда, поэтому гит не рисует такую линию
Ну, т.е. моё предположение оказалось верным...
* Начинаю подозревать, что дело в том, как у меня организованы ветки сейчас.
Т.е. у меня пока всё линейно, параллельных коммитов в разных ветках нет.
Т.е. в master не было коммитов после ухода на вторую ветку.
А во второй - не было коммитов после ухода на третью.
Возможно из-за этого оно всё линейно, в одну ветку отображает.
Но это пипец неудобно, т.к. не можешь посмотреть, какие коммиты какой ветке принадлежат.(
В общем, основное неудобство - нельзя увидеть, где произошёл отход на другую ветку.(
gitg показывает отход от мастера, но не показывает отход на третью ветку от второй.(
-
-
22.04.2020 в 11:25ты предлагаешь зарезервировать за каждой веткой какую-то её позицию по горизонтали?
но веток слишком много, ширины экрана не хватит
мастер имеет особый статус )))
-
-
22.04.2020 в 11:31Ну, этот момент решается тем, что после мержа, если ветка не продолжилась, - она рисуется в начале дерева, затем замыкается в мастер и на этом всё.
Т.е. если в прошлое отмотать - кольцо это увидишь, а на текущей дате ветка не рисуется, т.к. не продолжилась.
в проектах обычно много заброшенных веток, и что все их вести линиями до текущего дня?
Ну, может если бы их вели до текущего дня, то и не было столько заброшенных.)))
Т.к. было бы напоминание, что есть "не закрытая" ветка, т.е. ни с кем не слитая.
И ты либо сливаешь её с кем-то, т.е. она замыкается и больше не отрисовывается на текущем дне, либо удаляешь за ненадобностью.
А так да - получается что где-то остались открытые ветки, но они не рисуются и люди о них просто забывают.
И они висят мёртвыми лохмотьями.
-
-
22.04.2020 в 11:35И они висят мёртвыми лохмотьями.
это обычная ситуация в разработке
начали пилить фичу, потом решили, что она не нужна
ну не удалять же её из гита? )))
вот и висят "лохмотья", и это абсолютно нормально
после мержа, если ветка не продолжилась, - она рисуется в начале дерева, затем замыкается в мастер и на этом всё.
Т.е. если в прошлое отмотать - кольцо это увидишь, а на текущей дате ветка не рисуется, т.к. не продолжилась.
то есть, продолжать разработку в этой ветке ты почему-то не советуешь? )))
фичастые ветки мёрждатся в мастер многократно, это тоже нормально
-
-
22.04.2020 в 11:37но веток слишком много, ширины экрана не хватит
Это решается путём "показываем данные о коммите при наведении мыши", например.
Тогда коммиты на ветках отображаются просто точками. И дерево не растягивается в ширину.
Можно ещё динамически отображать инфу о коммитах при наведении на какую-то ветку.
Даже если так не ухищряться, то, даже если выделять ширину, - убегание за край экрана не такая большая цена за удобство восприятия веток.
Ибо в текущем варианте - надо тыкаться в каждый коммит, читать его данные и искать тот, на котором началась другая ветка.
Что, как мне кажется, занимает гораздо больше времени, чем ползунок экрана вбок подвинуть. )))
-
-
22.04.2020 в 11:46фичастые ветки мёрждатся в мастер многократно, это тоже нормально
Не, я о том, что если ветка смержилась в мастер только один раз и на этом сдохла - то она не отображается на текущей дате.
А если в ней продолжается активность - отображается.)
-
-
22.04.2020 в 11:49Основное я понял.
1. У меня всё в порядке. Просто пока идёт линейная структура и потому всё линией и отображается.
2. gui, отвечающий моим запросам - либо продолжать искать, либо вкуривать устройство гита и писать самому под свои задачи (что явно не ближайшая перспектива).
-
-
22.04.2020 в 11:56ну представь у тебя 100 веток, и из них только 3 нужных, остальные тупо резервируют пустое место )))
-
-
22.04.2020 в 12:14Учитывать, в какие ветки есть коммиты и как давно они сделаны.
И в соответствии с этим наиболее актуальные сдвигать ближе к мастеру.
Но это может попутать порядок веток, к которому народ привык, когда их было немного...
Хм... Ну, допустим, обойти это можно схлопыванием веток.
По типу того, как гитхаб схлопывает текст, который не менялся и показывает лишь участки, где были изменения.
Такой выход - наверное имеет место, да.
Причём, надо предусмотреть возможность ручного скрытия/отображения.
Т.е. ты видишь только те ветки, которые тебе нужны. А не все, которые в работе.
Но при этом не теряешь, т.к. у тебя сверху отображается, что между соседними ветками N скрытых.