Как изменить даты коммита git
Пошагово: установка git-edit-date, экспортируйте свою ветку в CSV, отредактируйте даты в электронной таблице, примените перезапись и смело отправляйте данные.
Когда вам это нужно
- коммиты показывают временные метки UTC от бегуна CI вместо вашего местного часового пояса
- Дрейф часов ноутбука оставил блок коммитов не вовремя
- Адрес электронной почты или имя автора неверны во многих коммитах в ветке функций.
- Вы хотите просмотреть каждое изменение даты в электронной таблице, прежде чем переписывать историю.
Шаг 1 — Экспортируйте ветку
Из вашего репозитория в ветке, которую вы хотите переписать:
git-edit-date export -o commits.csv
Это экспортирует текущую историю ветвей (git rev-list --reverse HEAD)
в файл CSV. Только коммиты доступны из HEAD включены.
Шаг 2 — Отредактируйте CSV
Открыть commits.csv в Excel, LibreOffice Calc или любом редакторе электронных таблиц.
Столбцы CSV
hash— оригинальный коммит SHA (только ссылка; не редактировать)author_name— отображаемое имя автора коммитаauthor_email— адрес электронной почты автора коммитаauthor_date— когда работа была изначально выполнена (RFC3339)committer_date— когда был создан коммит-объект (RFC3339)message— коммит-сообщение (только для справки; не изменяется при подаче заявки)
Например, даты используют формат RFC3339. 2024-03-05T14:30:00+01:00.
В большинстве случаев вы хотите author_date и committer_date чтобы соответствовать.
См. Часто задаваемые вопросы о дате автора и дате коммиттера.
author_email,author_date,committer_date
alice@wrong.com,2024-03-06T03:14:00Z,2024-03-06T03:14:00Z
author_email,author_date,committer_date
alice@work.com,2024-03-05T14:30:00+01:00,2024-03-05T14:30:00+01:00
Вы можете редактировать только некоторые строки — неизмененные строки сохраняют свои исходные метаданные. Когда закончите, сохраните файл как CSV.
Шаг 3 — Примените и нажмите
Для применения требуется чистое рабочее дерево, если вы не пройдете -allow-dirty:
git-edit-date apply -file=commits.csv
Проверьте результат:
git log --format=fuller -3
Если ветка уже была отправлена, безопасно обновите удаленный компьютер:
git push --force-with-lease
Контрольный список безопасных push-уведомлений
- Убедитесь, что вы находитесь на правильной ветке (
git branch --show-current) - Убедитесь, что никто другой активно не продвигает эту ветку.
- Использовать
--force-with-lease, не голый--force - Никогда не переписывайте shared или защищенные ветки без согласия команды.
- Ожидайте, что подписи GPG на переписанных коммитах станут недействительными.
Установить git-edit-date
curl -LO https://giteditdate.com/git-edit-date_amd64.deb
sudo dpkg -i git-edit-date_amd64.deb
Ссылка на команду: Документация CLI · Общие вопросы: Часто задаваемые вопросы · Путеводители: несколько коммитов, дата автора