Ответ 1
Так как git 1.6.3 git rebase
имеет --committer-date-is-author-date
для этой цели.
git rebase --committer-date-is-author-date
Оригинальный ответ:
Нет простого способа установить даты коммиттера (изменить: но см. "Редактировать 2" ниже). Даты автора легко настраиваются (в момент фиксации), так как --date
позволяет вам указывать каждый по ходу.
Переменная окружения GIT_COMMITTER_DATE
может использоваться для принудительного создания другой метки времени в момент совершения фиксации. Обратите внимание, однако, что вам нужно будет настроить это для каждой фиксации, которую вы переиграете. В результате новый коммит будет иметь другой SHA-1 (потому что вы изменили в нем некоторые биты, а именно поле даты коммиттера), что означает, что вы должны переделать все свои последующие транзакции.
Это то, что git filter-branch
делает (воссоздает некоторые, многие или все коммиты с изменениями, выполненными по пути, сохраняя сопоставление от старых идентификаторов SHA-1 с новыми идентификаторами SHA-1 и корректируя родительские установки четно- в противном случае - нетронутая фиксация копий, так что "новая" DAG новых идентификаторов SHA-1 будет соответствовать "старой" DAG всеми возможными способами, то есть любым способом, кроме идентификаторов SHA-1 и любых других изменений, сделанных вашим фильтром (s )).
Другими словами, для этого вы должны использовать git filter-branch
для перезаписи истории со всем, что это подразумевает. [Редактировать: вы можете буквально сделать это без git filter-branch
, например, сделав это в git rebase -i
, но эффект тот же.]
Изменить 2: как указано в комментарии (после удаления), git rebase
имеет --committer-date-is-author-date
для этой цели. Он по-прежнему выполняет ту же историю перезаписи, но гораздо удобнее, чем делать с помощью команды raw git filter-branch
.