Ответ 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. Я использую оба варианта в зависимости от того, что я хочу делать.