Git filter branch - How do I remove the old history from a git repository

De openkb
Aller à : Navigation, rechercher

Sommaire

Questions

I m afraid I couldn t find anything quite like this particular scenario.

I have a git repository with a lot of history: 500+ branches, 500+ tags, going back to mid-2007. It contains ~19,500 commits. We d like to remove all of the history before Jan 1, 2010, to make it smaller and easier to deal with (we would keep a complete copy of the history in an archive repository).

I know the commit that I want to have become the root of the new repository. I can t, however, figure out the correct git mojo to truncate the repo to start with that commit. I m guessing some variant of

git filter-branch

involving grafts would be necessary; it might also be necessary to treat each of the 200+ branches we want to keep separately and then patch the repo back together (something I do know how to do).

Has anyone ever done something like this? I ve got git 1.7.2.3 if that matters.

Answers

https://git.wiki.kernel.org/index.php/GraftPoint https://git.wiki.kernel.org/index.php/GraftPoint

After creating the graft, it takes effect right away; you should be able to look at git log and see that the unwanted old commits have gone away:

$ echo 4a46bc886318679d8b15e05aea40b83ff6c3bd47 > .git/info/grafts
$ git log --decorate | tail --lines=11
commit cb3da2d4d8c3378919844b29e815bfd5fdc0210c
Author: Your Name <your.email@example.com>
Date:   Fri May 24 14:04:10 2013 +0200

    Another message

commit 4a46bc886318679d8b15e05aea40b83ff6c3bd47 (grafted)
Author: Your Name <your.email@example.com>
Date:   Thu May 23 22:27:48 2013 +0200

    Some message

If all looks as intended, you can just do a simple git filter-branch -- --all to make it permanent.

  BEWARE:    after doing the   filter-branch   step, all commit ids will have changed, so anybody using the old repo must never merge with anyone using the new repo.

Source

License : cc by-sa 3.0

http://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository

Related

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils