Оформить старый коммит из git на основе даты - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь получить старый коммит из git из-за несовместимости с другим проектом (который использует этот код).Git-репозиторий - OpenZWave.

Я нашел сообщение на SO, говорящее о выдаче команды:

git checkout @{14.days.ago}

Но это приводит к:

warning: Log for '' only goes back to Wed, 23 May 2018 08:02:05 -0400.
HEAD is now at 77a05ed... Update hs-ms100plus.xml

Я не могуВыясните, что не так - очевидно, есть коммиты старше, чем сегодняшняя датаЧто не так с этой командой?(И приведет ли эта команда к замене моего клона кодом из 14 дней назад)

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Синтаксис @{XXX.days.ago} относится к reflog , локальной истории, сохраняемой Git в дополнение к истории, как показано, например, git log.Итак, @{14.days.ago} означает «где HEAD указывает на 14 дней назад в этом хранилище, на моем компьютере », а не «обязательство, сделанное 14 дней назад» (которое, вероятно, было сделано в другом хранилище в другомкомпьютер).

Вместо этого вы можете:

  • Получить идентификатор коммита, например,
git log --before 14.days.ago -1
  • Оформить этот коммит:
git checkout 
0 голосов
/ 23 мая 2018

Почему это не сработало?

git checkout @{14.days.ago} пытается восстановить локальное состояние конкретного репозитория в данный момент на основе reflog (записьиз всех коммитов HEAD, указанных в прошлом).Если это новый клон, он не будет работать.

Итак, хороший синтаксис не будет работать, и вам нужно найти коммит, выполненный год назад, и проверить его по хешу.Как это сделать?

Как найти коммит, отправленный год назад?

Я бы просто попытался найти правильный коммит в gitk, прокручивая годкоммитов не должно быть проблемой в большинстве случаев.Однако вы также можете просмотреть журнал, например:

git log --date=iso | grep -C3 2017-05-

или, если вы знаете, что в определенный день были отправлены коммиты, например:

git log --date=iso | grep -C3 2017-05-23

Краткое объяснение:

  • --date=iso гарантирует, что дата будет отображаться легко и быстро.
  • -C3 позволяет grep включать 3 соседние строки, вверх и вниз, так что дляпри каждом коммите мы фиксируем строку с хешем и первой строкой сообщения о коммите.
...