Re: Git: спрятанные головы?
От: CaptainFlint http://flint-inc.ru/
Дата: 17.12.14 10:44
Оценка:
Здравствуйте, Bluebarry, Вы писали:

B>С Меркуриалом я давно знаком, сейчас разбираюсь с git.


B>Создаю репозиторий А, делаю в нем пару коммитов, клонирую его в Б (все локально), и делаю еще один коммит в Б. Затем возвращаюсь в А и делаю fetch из Б. По идее, при этом последний коммит должен перетечь в А. Судя по отчету fetch, так оно и есть. Но в истории А этот новый коммит не виден — только два первоначальных. Пробовал всякие опции git log: --all, --branches — не помогает. Пробовал гляделки типа gitk, tortoise — все равно не видно.


B>Покурил доки. Узнал, что при фетче формируется новая голова FETCH_HEAD, которая и указывает на свежеполученные коммиты. Но git log ее не показывает, ее показывает только git log FETCH_HEAD.


B>Как-то это странно. В репозитории выросла новая ветка, но увидеть ее не так-то просто. Чтобы увидеть скрытую ветку, я должен знать ее название?!

B>Может все-таки есть какой-нибудь git log --very_all, который покажет все имеющиеся в репозитории коммиты, ветки, головы? А как увидеть это в GUI-утилитах?

Обычно сценарий использования немного другой. При клонировании автоматически создаётся remote-указатель origin на исходный реп, и вся работа с репом производится через это имя, а не прямым путём к репозиторию:
git fetch origin
В этом случае создаётся ветка origin/master, указывающая на свежеполученную master-ветку исходного репозитория. Её видно в логе, в списке веток (если задать -a или -r), её можно мёрджить с локальными ветками и т. д.

Что касается исходного вопроса, то получить лог с полным списком всех коммитов напрямую нельзя. Есть команда git fsck --unreachable, которая покажет все недостижимые коммиты, а зная хэши коммитов, с ними уже можно работать напрямую, но в этот список попадёт и куча всякого мусора: остатки после объединяющих коммитов (--amend которые), хвосты после сдвига веток "вниз по истории" для отката действий, коммиты из старых веток, на которые был сделан rebase и пр.
Почему же, ё-моё, ты нигде не пишешь «ё»?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.