git-edit-date против изменения, перебазирования, filter-branch и filter-repo
Есть несколько способов изменить даты коммита git.
Вот честное сравнение, которое поможет вам выбрать правильный инструмент:
из git commit --amend за один коммит на CSV массовые правки на целую ветку.
Сравнительная таблица
| git-edit-date | git коммит --изменить | интерактивное перебазирование | filter-branch | filter-repo | |
|---|---|---|---|---|---|
| Массовое изменение дат | CSV в электронной таблице | Только последний коммит | Один коммит за раз | Скрипт env-фильтра оболочки | Скрипт обратного вызова Python |
| Изменить адрес электронной почты автора | Да | Только последний коммит | Руководство по коммиту | env-фильтр | карта почты/обратный звонок |
| Визуальная проверка перед применением | электронная таблица | Нет | Нет | Нет | Нет |
| Кривая обучения | Низкий | Низкий | Середина | Высокий | Середина |
| Officially поддерживается | Активный | Встроенный в git | Встроенный в git | Устарело | Рекомендуемая замена |
| Лучшее для | Массовые исправления на уровне ветки через CSV | Исправьте только наконечник коммит | 1–3 последних коммита | Устаревшие одноразовые сценарии | Сложные миграции по всему репо |
Когда использовать git-edit-date
- Вам нужно исправить много коммитов в одной ветке
- Вы хотите сортировать, фильтровать и просматривать даты в формате Excel или LibreOffice.
- Вам необходимо изменить даты автора и коммиттера со смещением часового пояса.
- Вам нужен простой рабочий процесс экспорта → редактирования → применения без написания сценариев оболочки.
Когда использовать git commit --amend
- Только последний коммиту требуется исправление даты или автора
- Вы еще не нажали или нормально переписываете только подсказку
- Однострочного достаточно, например
GIT_AUTHOR_DATE=… GIT_COMMITTER_DATE=… git commit --amend --no-edit
Изменение останавливается на одном коммите. Если вам нужно зафиксировать даты в ветке, использовать Учебное пособие по CSV вместо повторения остановок изменения или перебазирования.
Когда использовать интерактивную перебазировку
- Только последний коммит (или очень немногие) требует изменения даты.
- Вы уже находитесь в процессе перебазирования для сжатия или изменения порядка.
- Вам комфортно с
git rebase -iи изменить команды
Когда использовать filter-branch
Вероятно, вам не следует этого делать. git officially устарел filter-branch
в пользу filter-repo. Осталось в старых туториалах и ответах Stack Overflow,
но синтаксис env-filter подвержен ошибкам при перезаписи даты.
Когда использовать filter-repo
- Вся история репозитория нуждается в реструктуризации
- Вы удаляете секреты, разделяете репозитории или выполняете крупномасштабное переназначение авторов.
- Производительность и безопасность важнее, чем удобство работы с электронными таблицами.
Для сложных случаев filter-repo — подходящий современный инструмент. git-edit-date выигрывает, когда вам нужна электронная таблица и быстрое исправление на уровне ветки.
Попробуйте git-edit-date
curl -LO https://giteditdate.com/git-edit-date_amd64.deb
sudo dpkg -i git-edit-date_amd64.deb
git-edit-date export -o commits.csv
Шаг за шагом: учебник · Путеводители: блог · Общие вопросы: Часто задаваемые вопросы · Команды: документы