Почему git fsck --lost-found обозначает недостижимые коммиты в reflog как висячие?

я работаю сgit gcи я заметил некоторое поведение, которое я не понимаю и не могу согласовать в документах. Это относится к проверке зависших коммитов с помощью утилиты.

Рассмотрим следующие простые шаги:

  1. Создайте новую ветку функций и сделайте один коммит.
  2. Вернитесь к мастеру и удалите функцию без слияния.
  3. Проверьте reflog, как и ожидалось, ваша фиксация там.

Теперь, когда я запускаю , я (правильно?) не вижу оборванного коммита. Согласно этому высоко оцененному ответу :

Обратите внимание, что коммиты, на которые ссылается ваш reflog, считаются доступными.

И

И поскольку коммит называется висячим только тогда, когда на него ничего не указывает, включая записи журнала ссылок, «журналы ссылок для висячих коммитов» не имеют значения.

Основываясь на этом объяснении, можно было бы ожидать, что Git не считает коммиты в моем примере висячими, потому что они по-прежнему доступны через reflog.

Если я истечу срок действия недостижимых объектов из reflog, то простойgit fsckтеперь покажет этот коммит как висящий.

Однако предположим, что срок действия reflog не истек. Если я побегуgit fsck --lost-found, Git теперь помечает этот коммит как висящий, хотя он все еще существует в журнале ссылок.

Из того, что я смог найти в документах, ничего не говорится о переопределении того, что представляет собой висячий коммит или любое другое подразумеваемое исключение.

Мой вопрос: (не?) достижимые коммиты в reflog болтаются или нет? Если нет, то почему--lost-foundфлаг сделать их такими?

0 ответов

Другие вопросы по тегам