Lonely Dreamer (sanmai) wrote,
Lonely Dreamer
sanmai

Category:

Git Forget: забыть всё, или свёртываем всю историю в один коммит

Читайте дальше: http://www.alexeykopytko.com/2011/git-forget.html


Иногда бывает нужно свернуть всю историю какого-то репозитария в один коммит. В этом случае git rebase -i не подходит, потому что от него останется два коммита, первый и последний.
На помощь нам приходит низкоуровневая команда git-commit-tree.

Для начала скопируем целевой репозитарий куда-нибудь, просто на всякий случай:
$ git clone Project NewProject
Действуем:
$ cd NewProject
$ git reset `echo "начало работы над новым проектом" | git commit-tree HEAD^{tree}`
$ git reflog expire --all --expire-unreachable=now
$ git gc --aggressive --prune=now
По желанию сообщение можно заменить на любое другое подходящее.
Проверяем:
$ git log
commit bc1f1192112cc1c8141e1efdc0601c7bb67d5aa0
Author: You 
Date:   Tue Aug 16 21:40:00 2011 +0900

    начало работы над новым проектом
Вот и всё!
Tags: git, linux, useful
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 4 comments