Вот удобный псевдоним, который изменяет время фиксации и автора последнего коммита на время, принятое date --date
:
[alias]
cd = "!d=\"$(date -d \"$1\")\" && shift && GIT_COMMITTER_DATE=\"$d\" \
git commit --amend --date \"$d\""
Использование: git cd <date_arg>
Примеры:
git cd now # update the last commit time to current time
git cd '1 hour ago' # set time to 1 hour ago
Edit:
Вот более автоматизированная версия, которая проверяет, что индекс является чистым (без незафиксированных изменений) и повторно использует последнее сообщение о коммите, или в противном случае происходит сбой (защита от ошибок):
[alias]
cd = "!d=\"$(date -d \"$1\")\" && shift && \
git diff-index --cached --quiet HEAD --ignore-submodules -- && \
GIT_COMMITTER_DATE=\"$d\" git commit --amend -C HEAD --date \"$d\"" \
|| echo >&2 "error: date change failed: index not clean!"