Подтвердить что ты не робот

Как понять git log -graph

Я довольно запутался с выходом графического git журнала.

Я понимаю, что каждый * означает фиксацию, независимо от того, является ли это расходом, общим или слиянием. Я понимаю, что трубы означают ветвь.

Посмотрим на простой график:

enter image description here

Прежде всего, для какой ветки нужна красная труба (самая левая)? Я не думаю, что это текущая ветка, в которой я включен, потому что после проверки в другой ветке график выглядит одинаково. Кроме того, он не представляет собой ветвь мастера.

Во-вторых, если самая левая ветвь представляет одну ветвь, почему она меняет цвет после фиксации "0e5b5"?

Я искал учебник по чтению графических журналов git, к сожалению, я ничего не получил. Если есть какие-то удивительные уроки по этой теме, не стесняйтесь делиться ими.

4b9b3361

Ответ 1

Git работает с текущей фиксацией, смотрящей на предков. Филиалы не являются "сущностями", они являются (движущимися) ссылками. Нет способа для git log (или gitk, который имеет другую цветовую схему, но аналогичен git log -graph или tig), чтобы узнать, является ли текущая ветка потомком ветки A или ветки B. Это только знает родителей. От человека git -log:

   git log -p -m --first-parent
       Shows the history including change diffs, but only from the "main 
       branch"   perspective, skipping commits that come from merged
       branches, and showing full diffs of changes introduced by the merges. 
       This makes sense only when following a strict policy of merging
       all topic branches when staying on a single integration branch.

Несколько затронет вашу озабоченность. git log по умолчанию использует текущий проверочный фиксатор как ссылку (идентичный исполнению git log HEAD

В то время как я считаю, что man-страница понятна для git, вы можете взглянуть на gitk или tig. Первый - это графический интерфейс, который позже является терминальным инструментом минимального gitk. Я использую оба варианта в зависимости от того, что я хочу делать.