Вчера я клонировал репозиторий Git (размещенный на экземпляре GitLab). HEAD был каким-то коммитом (26337128
). Сегодня я сделал git pull
, но этот коммит больше не отображается в журнале (git log | grep 26337128
и git branch -a --contains 26337128
оба ничего не дают). Почему?
Обратите внимание, что коммит по-прежнему виден с помощью git show 26337128
(и в веб-интерфейсе GitLab), я не делал никаких локальных изменений и все еще нахожусь в ветке по умолчанию.
Обновлено:
Вот вывод git reflog --all
, но я не знаю, как его интерпретировать:
8d0f83b389ec (HEAD -> drm-tip, origin/drm-tip, origin/HEAD) refs/heads/drm-tip@{0}: pull (finish): refs/heads/drm-tip onto 8d0f83b389ec64b9f7f9b2ee241fc352346868f1
8d0f83b389ec (HEAD -> drm-tip, origin/drm-tip, origin/HEAD) HEAD@{0}: pull (finish): returning to refs/heads/drm-tip
8d0f83b389ec (HEAD -> drm-tip, origin/drm-tip, origin/HEAD) HEAD@{1}: pull (start): checkout 8d0f83b389ec64b9f7f9b2ee241fc352346868f1
8d0f83b389ec (HEAD -> drm-tip, origin/drm-tip, origin/HEAD) refs/remotes/origin/drm-tip@{0}: pull: forced-update
26337128da9b refs/heads/drm-tip@{1}: clone: from https://gitlab.freedesktop.org/drm/tip
26337128da9b refs/remotes/origin/HEAD@{0}: clone: from https://gitlab.freedesktop.org/drm/tip
26337128da9b HEAD@{2}: clone: from https://gitlab.freedesktop.org/drm/tip
Трудно сказать. Возможно, ваш коммит уже был в исходной версии (светлые умы исправляют те же ошибки). Вам придется копать глубже (посмотрите на ветки, например, с помощью gitk).
Если вам все еще нужен этот коммит или вы хотите понять, как была изменена история, вы можете проверить журнал обновлений с помощью git reflog, чтобы увидеть, какие изменения произошли в репозитории.
Коммит, о котором вы спрашиваете, присутствует в вашем локальном репозитории; он указан в трех нижних строках рефлога.
Что касается того, что произошло: ну, было бы полезнее, если бы вы сказали git reflog --date iso
, чтобы мы могли видеть, сколько времени прошло между вашими действиями; но, судя по рефлогу и небольшим подсказкам, которые вы нам дали, очевидно, между вашим вчерашним клоном и сегодняшним извлечением кто-то выполнил принудительное нажатие (обратите внимание на «pull: принудительное обновление») — и поэтому 26337128
был вырван переписанной ветки.
Конечно, люди не должны делать подобные вещи (принудительно отправлять в общую ветку). Но, очевидно, ваш пульт gitlab не настроен для предотвращения этого.
В любом случае, этот коммит у вас все еще есть, если вы этого хотите (на данный момент). Поскольку его больше нет ни в одной ветке, в конечном итоге он будет удален сборщиком мусора, если вы его не закрепите. На данный момент сам рефлог сохраняет фиксацию.