Существует ли способ удалить все фиксации перед указанной фиксацией и использованием, которые фиксируют как начальная буква?
Допустим, хеш нового самого старого коммита - X, и мы можем временно использовать «oldroot» и «newroot»:
git checkout -b oldroot X
TREE=`git write-tree`
COMMIT=`echo "Killed history" | git commit-tree "$TREE"`
git checkout -b newroot "$COMMIT"
git rebase --onto newroot oldroot master
# repeat for other branches than master that should use the new initial commit
git checkout master
git branch -D oldroot
git branch -D newroot
git gc # WARNING: if everything's done right, this will actually delete your history from the repo!
Это создаст коммит «newroot» с тем же содержанием, что и коммит «oldroot», но без какого-либо родители. Затем он переустанавливает все другие ветки на новый корень, который должен быть в истории всех из них.
РЕДАКТИРОВАТЬ: проверено и исправлено; чуть позже, немного доработан