Удалите фиксации перед определенной фиксацией

Существует ли способ удалить все фиксации перед указанной фиксацией и использованием, которые фиксируют как начальная буква?

21
задан Erik Aigner 12 February 2013 в 20:10
поделиться

1 ответ

Допустим, хеш нового самого старого коммита - 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», но без какого-либо родители. Затем он переустанавливает все другие ветки на новый корень, который должен быть в истории всех из них.

РЕДАКТИРОВАТЬ: проверено и исправлено; чуть позже, немного доработан

25
ответ дан 29 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: