Git log вдруг пропускает коммиты (с --after)? - PullRequest
0 голосов
/ 25 декабря 2018

Нашел что-то похожее здесь:

Как `git log --all` может пропустить точку фиксации?

... но это касается висячих коммитов,что не проблема у меня здесь.(это на git версии 2.17.1, Ubuntu 18.04)

По сути, я работал со скриптом, который автоматически создает небольшое репозиторий git с пустыми коммитами и фиксированными временными метками;Должно быть, я удалял и заново создавал этот репо как минимум 100 раз за вечер.

Примерно до 20 минут назад поведение было таким же - так выглядит вся история (ПРАВКА: добавлено --graph,чтобы показать, что это простая линейная история, без разветвлений):

$ git --no-pager log --graph --all --pretty='%ad %cd %h'
* Wed Jul 4 16:56:04 2018 +0000 Wed Jul 4 16:56:04 2018 +0000 bec8f1c
* Wed Jul 4 16:10:24 2018 +0000 Wed Jul 4 16:10:24 2018 +0000 dd51181
* Wed Jun 20 18:31:47 2018 +0000 Wed Jun 20 18:31:47 2018 +0000 8b7ca2a
* Wed Jun 20 18:11:11 2018 +0000 Wed Jun 20 18:11:11 2018 +0000 9a32592
* Wed Jun 20 17:10:17 2018 +0000 Wed Jun 20 17:10:17 2018 +0000 2454ee0
* Wed Jun 20 16:56:22 2018 +0000 Wed Jun 20 16:56:22 2018 +0000 b77dee4
* Tue Jun 19 21:40:13 2018 +0000 Tue Jun 19 21:40:13 2018 +0000 c9dc470
* Tue Jun 19 19:20:31 2018 +0000 Tue Jun 19 19:20:31 2018 +0000 baceab3
* Tue Jun 19 18:30:11 2018 +0000 Tue Jun 19 18:30:11 2018 +0000 89ab6c2
* Tue Jun 19 17:35:19 2018 +0000 Tue Jun 19 17:35:19 2018 +0000 a95553d
* Thu Jun 14 10:01:05 2018 +0000 Thu Jun 14 10:01:05 2018 +0000 c61c8fc
* Thu Jun 14 09:19:41 2018 +0000 Thu Jun 14 09:19:41 2018 +0000 2046e07
* Thu Jun 14 08:26:38 2018 +0000 Thu Jun 14 08:26:38 2018 +0000 f205435
* Thu Jun 14 08:26:29 2018 +0000 Thu Jun 14 08:26:29 2018 +0000 d4c70f1
* Wed Jun 13 19:20:16 2018 +0000 Wed Jun 13 19:20:16 2018 +0000 28a5a55

Я получаю тот же вывод для git --no-pager log --all --pretty='%ad %h' --after 2018-06-13 (хотя "после" 2018-06-13 будет означать, что никакие коммиты с 2018-06-13 будет включено, но это не так: коммит "Ср Июн 13" по-прежнему будет указан с --after 2018-06-13).

В любом случае, так что большую часть вечера --after 2018-06-14 начинался с Thu Jun 14 08:26:29, и включает в себя все четыре коммита из Thu Jun 14 и все последующие;в основном это выглядело так:

$ git --no-pager log --all --pretty='%ad %h' --after 2018-06-14
Wed Jul 4 16:56:04 2018 +0000 bec8f1c
Wed Jul 4 16:10:24 2018 +0000 dd51181
Wed Jun 20 18:31:47 2018 +0000 8b7ca2a
Wed Jun 20 18:11:11 2018 +0000 9a32592
Wed Jun 20 17:10:17 2018 +0000 2454ee0
Wed Jun 20 16:56:22 2018 +0000 b77dee4
Tue Jun 19 21:40:13 2018 +0000 c9dc470
Tue Jun 19 19:20:31 2018 +0000 baceab3
Tue Jun 19 18:30:11 2018 +0000 89ab6c2
Tue Jun 19 17:35:19 2018 +0000 a95553d
Thu Jun 14 10:01:05 2018 +0000 c61c8fc
Thu Jun 14 09:19:41 2018 +0000 2046e07
Thu Jun 14 08:26:38 2018 +0000 f205435
Thu Jun 14 08:26:29 2018 +0000 d4c70f1

Однако за последние 20 минут он просто перестал возвращать Thu Jun 14 08:26:29, Thu Jun 14 08:26:38 и Thu Jun 14 09:19:41 для одной и той же команды - так что теперь я получаю эффективноэто:

$ git --no-pager log --all --pretty='%ad %h' --after 2018-06-14
Wed Jul 4 16:56:04 2018 +0000 bec8f1c
Wed Jul 4 16:10:24 2018 +0000 dd51181
Wed Jun 20 18:31:47 2018 +0000 8b7ca2a
Wed Jun 20 18:11:11 2018 +0000 9a32592
Wed Jun 20 17:10:17 2018 +0000 2454ee0
Wed Jun 20 16:56:22 2018 +0000 b77dee4
Tue Jun 19 21:40:13 2018 +0000 c9dc470
Tue Jun 19 19:20:31 2018 +0000 baceab3
Tue Jun 19 18:30:11 2018 +0000 89ab6c2
Tue Jun 19 17:35:19 2018 +0000 a95553d
Thu Jun 14 10:01:05 2018 +0000 c61c8fc

Что случилось, почему эти коммиты больше не работают?Полагаю, было бы более понятно, если бы это был более крупный репо с большим количеством веток / участников и т. Д., Поэтому больше шансов достичь несовместимого состояния - но в этом случае в нем даже нет никакого контента, только пустые коммиты ?!И он даже не может прийти в какое-либо противоречивое состояние, потому что я продолжаю удалять его и воссоздавать из сценария ??? !!

Кто-нибудь знает, что может быть причиной этого, и как я могу получить gitчтобы снова показать все коммиты в четверг 14 июня с --after 2018-06-14, как я получил с предыдущими вызовами этой команды?!

Кстати, в приведенном выше сообщении упоминается --full-history, но это не тактут мало что поможет:

git --no-pager log --full-history --all --pretty='%ad %h' --after 2018-06-14

... возвращает те же самые результаты, которые я выложил выше для вызова без --full-history.

РЕДАКТИРОВАТЬ: я могу вернуться к показу всехэти четыре коммита, если я использую --after '2018-06-14 00:00:00', но я на 100% уверен, что никогда не использовал эту команду в этой форме, пока не получил эту проблему.Может быть, если вы не укажете часы в --after, git может в конечном итоге назначить их случайным образом - и мне просто «повезло» большую часть ночи, если git случайно выбрал 00:00:00 для заполнениявне часов?

1 Ответ

0 голосов
/ 25 декабря 2018

Анализатор даты в Git использует местное время в качестве базы, попробуйте указать --after 2018-06-13T00:00Z для полуночного зулу (или отключите Z для полуночи местного).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...