#!/bin/bash set -e # Define dates DATE1="2016-07-24T12:00:00" DATE2="2020-07-25T12:00:00" DATE3="2020-07-26T12:00:00" DATE4="$(date -Iseconds)" # Today # Get commit hashes COMMITS=($(git rev-list --reverse HEAD)) # Create a temporary branch to work on git checkout -b temp-rewrite # Amend each commit GIT_AUTHOR_DATE="$DATE1" GIT_COMMITTER_DATE="$DATE1" git commit --amend --no-edit git cherry-pick ${COMMITS[1]} GIT_AUTHOR_DATE="$DATE2" GIT_COMMITTER_DATE="$DATE2" git commit --amend --no-edit git cherry-pick ${COMMITS[2]} GIT_AUTHOR_DATE="$DATE3" GIT_COMMITTER_DATE="$DATE3" git commit --amend --no-edit git cherry-pick ${COMMITS[3]} GIT_AUTHOR_DATE="$DATE4" GIT_COMMITTER_DATE="$DATE4" git commit --amend --no-edit # Switch main to the new history git checkout main git reset --hard temp-rewrite git branch -D temp-rewrite