Чтобы не потерять какую-либо историю; лучше сначала возьмите копию своего репозитория :). Здесь мы идем: (<f>
является ша коммитом е, что вы хотите быть новым корневой фиксацию)
git checkout --orphan temp <f> # checkout to the status of the git repo at commit f; creating a branch named "temp"
git commit -m "new root commit" # create a new commit that is to be the new root commit
git rebase --onto temp <f> master # now rebase the part of history from <f> to master onthe temp branch
git branch -D temp # we don't need the temp branch anymore
Если у вас есть пульт дистанционного управления, где вы хотите, чтобы иметь такую же усеченную историю; вы можете использовать git push -f
. Предупреждение: Это опасная команда; не используйте это легко! Если вы хотите быть уверены, что ваша последняя версия кода остается прежней; вы можете запустить git diff origin/master
. Это не должно меняться (поскольку изменилась только история, а не содержимое ваших файлов).
git push -f
Следующие две команды являются необязательными - они сохраняют ваше git-репо в хорошей форме.
git prune --progress # delete all the objects w/o references
git gc --aggressive # aggressively collect garbage; may take a lot of time on large repos
['rebase'] (https://git-scm.com/docs/git-rebase) - инструмент для изменения истории. – Maroun
В чем проблема, которую вы хотите решить? –