git-reflog
Название
git-reflog — управление информацией reflog
Краткое описание
git reflog [show] [<log-options>] [<ref>]
git reflog list
git reflog exists <ref>
git reflog write <ref> <old-oid> <new-oid> <message>
git reflog delete [--rewrite] [--updateref]
[--dry-run | -n] [--verbose] <ref>@{<specifier>}...
git reflog drop [--all [--single-worktree] | <refs>…]
git reflog expire [--expire=<time>] [--expire-unreachable=<time>]
[--rewrite] [--updateref] [--stale-fix]
[--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>…] Описание
Эта команда управляет информацией, записанной в reflog.
Журналы ссылок, или «reflog», записывают, когда указатели веток и других ссылок обновлялись в локальном репозитории. Reflog полезны в различных командах Git для указания предыдущего значения ссылки. Например, HEAD@{2} означает «где находился HEAD два перемещения назад», master@{one.week.ago} означает «на что указывала master неделю назад в этом локальном репозитории» и так далее. Подробнее см. в gitrevisions[7].
Команда принимает различные подкоманды и разные параметры в зависимости от подкоманды:
Подкоманда «show» (она же используется по умолчанию, если подкоманда не указана) показывает журнал ссылки, переданной в командной строке (или HEAD по умолчанию). Reflog охватывает все недавние действия, а кроме того, reflog HEAD записывает переключение веток. git reflog show — это псевдоним для git log -g --abbrev-commit --pretty=oneline; дополнительные сведения см. в git-log[1].
Подкоманда «list» выводит список всех ссылок, для которых существует соответствующий reflog.
Подкоманда «exists» проверяет, существует ли reflog для ссылки. Она завершается с нулевым кодом, если reflog существует, и с ненулевым, если нет.
Подкоманда «write» записывает одну запись в reflog заданной ссылки. Эта новая запись добавляется в конец reflog и становится самой последней. Имя ссылки должно быть указано полностью. Идентификаторы старого и нового объектов не должны быть сокращёнными и должны указывать на существующие объекты. Сообщение reflog нормализуется.
Подкоманда «delete» удаляет отдельные записи из reflog, но не сам reflog. Аргумент должен быть записью exact (например, «git reflog delete master@{2}»). Эта подкоманда также обычно не используется непосредственно конечными пользователями.
Подкоманда «drop» полностью удаляет reflog для указанных ссылок. Это отличается от подкоманд «expire» и «delete», с помощью которых можно удалять записи reflog, но не сам reflog.
Подкоманда «expire» удаляет устаревшие записи reflog. Из reflog удаляются записи, срок существования которых превышает expire, а также записи, срок существования которых превышает expire-unreachable и которые недостижимы из текущего указателя. Обычно конечные пользователи не используют эту подкоманду напрямую — см. вместо этого git-gc[1].
Параметры
Параметры show
git reflog show принимает любые параметры, принимаемые git log.
Параметры delete
git reflog delete принимает параметры --updateref, --rewrite, -n, --dry-run и --verbose с теми же значениями, что и при использовании с expire.
Параметры drop
-
--all -
Удалить reflog всех ссылок из всех рабочих деревьев.
-
--single-worktree -
По умолчанию, если указан
--all, удаляются reflog из всех рабочих деревьев. Этот параметр ограничивает обработку только reflog текущего рабочего дерева.
Параметры expire
-
--all -
Обработать reflog всех ссылок.
-
--single-worktree -
По умолчанию, если указан
--all, обрабатываются reflog из всех рабочих деревьев. Этот параметр ограничивает обработку только reflog текущего рабочего дерева. -
--expire=<time> -
Удалить записи, срок существования которых превышает указанное время. Если этот параметр не указан, срок действия берётся из настройки конфигурации
gc.reflogExpire, значение которой по умолчанию составляет 90 дней.--expire=allудаляет записи независимо от их возраста;--expire=neverотключает удаление достижимых записей (см. также--expire-unreachable). -
--expire-unreachable=<time> -
Удалить записи, срок существования которых превышает <time> и которые недостижимы из текущего указателя ветки. Если этот параметр не указан, срок действия берётся из настройки конфигурации
gc.reflogExpireUnreachable, значение которой по умолчанию составляет 30 дней.--expire-unreachable=allудаляет недостижимые записи независимо от их возраста;--expire-unreachable=neverотключает досрочное удаление недостижимых записей (см. также--expire). -
--updateref -
Обновить ссылку, присвоив ей значение верхней записи reflog (то есть <ref>@{0}), если предыдущая верхняя запись была удалена. (Этот параметр игнорируется для символических ссылок.)
-
--rewrite -
Если предшествующая запись reflog удалена, изменить её «старый» SHA-1 так, чтобы он совпадал с полем «новый» SHA-1 записи, которая теперь предшествует ей.
-
--stale-fix -
Удалить все записи reflog, указывающие на «повреждённые коммиты». Повреждённый коммит — это коммит, недостижимый из указателей каких-либо ссылок и ссылающийся прямо или косвенно на отсутствующий объект коммита, дерева или blob.
Для этого необходимо пройти по всем достижимым объектам, то есть вычисление имеет ту же стоимость, что и
git prune. Этот параметр предназначен в первую очередь для исправления повреждений, вызванных сборкой мусора в старых версиях Git, которые не защищали объекты, на которые ссылались reflog. -
-n -
--dry-run -
Не удалять записи, а только показать, какие записи были бы удалены.
-
--verbose -
Вывести на экран дополнительную информацию.
reflog
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-reflog