> Ну вот git тоже можно рассматривать как "протокол взаимодействия между разработчиками".///---http://rsdn.ru/forum/tools/5894359
Git: спрятанные головы?
От: Bluebarry
Дата: 17.12.14 10:38
С Меркуриалом я давно знаком, сейчас разбираюсь с git.
Создаю репозиторий А, делаю в нем пару коммитов, клонирую его в Б (все локально), и делаю еще один коммит в Б. Затем возвращаюсь в А и делаю fetch из Б. По идее, при этом последний коммит должен перетечь в А. Судя по отчету fetch, так оно и есть. Но в истории А этот новый коммит не виден — только два первоначальных. Пробовал всякие опции git log: --all, --branches — не помогает. Пробовал гляделки типа gitk, tortoise — все равно не видно.
Покурил доки. Узнал, что при фетче формируется новая голова FETCH_HEAD, которая и указывает на свежеполученные коммиты. Но git log ее не показывает, ее показывает только git log FETCH_HEAD.
Как-то это странно. В репозитории выросла новая ветка, но увидеть ее не так-то просто. Чтобы увидеть скрытую ветку, я должен знать ее название?!
Может все-таки есть какой-нибудь git log --very_all, который покажет все имеющиеся в репозитории коммиты, ветки, головы? А как увидеть это в GUI-утилитах?
---///
Ну и ответ:
///---
От: CaptainFlint
Дата: 17.12.14 13:44
Что касается исходного вопроса, то получить лог с полным списком всех коммитов напрямую нельзя. Есть команда git fsck --unreachable, которая покажет все недостижимые коммиты, а зная хэши коммитов, с ними уже можно работать напрямую, но в этот список попадёт и куча всякого мусора: остатки после объединяющих коммитов (--amend которые), хвосты после сдвига веток "вниз по истории" для отката действий, коммиты из старых веток, на которые был сделан rebase и пр.
---///
Бинго!