Для выполнения данной задачи, необходимо использовать библиотеку GitPython, которая позволит работать с репозиторием Git в Python.

Вот пример скрипта на Python, который выбирает коммиты между двумя указанными timestamp и равномерно распределяет их между другими двумя timestamp, полностью переписывая историю Git.

```python
import os
import git
import time
import datetime

# Функция для получения списка коммитов между start_ts и end_ts
def get_commits_between_time(repo, start_ts, end_ts):
    start_datetime = datetime.datetime.fromtimestamp(start_ts)
    end_datetime = datetime.datetime.fromtimestamp(end_ts)
    commits = []
    for commit in repo.iter_commits():
        commit_time = datetime.datetime.fromtimestamp(commit.committed_date)
        if start_datetime <= commit_time <= end_datetime:
            commits.append(commit)
    return commits

# Функция для изменения даты коммитов
def change_commit_date(commit, new_date):
    os.environ['GIT_COMMITTER_DATE'] = str(new_date)
    os.environ['GIT_AUTHOR_DATE'] = str(new_date)
    commit.author.date = new_date
    commit.committer.date = new_date
    commit.tree = commit.tree.write()

# Задаем переменные
repo_path = "/path/to/repo"
start_ts = 1631109875 # первый timestamp
end_ts = 1631355267 # второй timestamp
new_start_ts = 1641000000 # новый первый timestamp
new_end_ts = 1642000000 # новый второй timestamp

# Открываем репозиторий 
repo = git.Repo(repo_path)

# Получаем список коммитов между start_ts и end_ts
commits = get_commits_between_time(repo, start_ts, end_ts)

# Вычисляем разницу во времени между новыми timestamp
total_time_diff = new_end_ts - new_start_ts

# Вычисляем шаг, на который мы будем изменять дату коммитов
step = total_time_diff / len(commits)

# Изменяем дату каждого коммита
for i, commit in enumerate(commits):
    new_date = int(new_start_ts + i * step)
    change_commit_date(commit, new_date)

# Перезаписываем историю гита
repo.git.rebase('-i', '--root', '--autosquash', '--keep-empty')

# Вызываем команду git gc, чтобы убедиться, что все ненужные данные были удалены
repo.git.gc('--prune=now')
```

Этот скрипт сначала открывает репозиторий с указанным путем, затем находит список коммитов между первыми двумя timestamp и изменяет дату каждого коммита, чтобы они были равномерно распределены между новыми timestamp. Затем он вызывает команду `git rebase` с опциями, чтобы переписать историю Git. Наконец, он вызывает команду `git gc`, чтобы убедиться, что все ненужные данные были удалены.

Изменить пасту