Filter-Repo
git filter-branch
устарело. Вместо этого используйте git filter-repo
. Вам нужно будет установить его.
Вот отличная статья о том, как использовать git -filter-repo для изменения даты фиксации. Документация git -filter-repo довольно хорошо объясняет концепцию --commit-callback
.
Очень простой пример
Давайте сбросим часовой пояс всех дат фиксации на ноль.
# Save this as ../change_time.py
def handle(commit):
"Reset the timezone of all commits."
date_str = commit.author_date.decode('utf-8')
[seconds, timezone] = date_str.split()
new_date = f"{seconds} +0000"
commit.author_date = new_date.encode('utf-8')
handle(commit)
# You need to be in a freshly-cleaned repo. Or use --force.
git clone <...> your_repo
cd your_repo
# First just a dry run.
git filter-repo --dry-run --commit-callback "$(cat ../change_time.py)"
# And now do it for real
git filter-repo --commit-callback "$(cat ../change_time.py)"