この特定のシナリオのようなものを見つけることができなかったのではないかと思います。
私は多くの歴史を持つgitリポジトリを持っています:500以上のブランチ、500以上のタグ、2007年半ばにさかのぼります。約19,500のコミットが含まれています。2010年1月1日より前のすべての履歴を削除して、より小さく、扱いやすくしたいと思います(履歴の完全なコピーをアーカイブリポジトリに保持します)。
新しいリポジトリのルートになりたいというコミットを知っています。ただし、そのコミットで開始するようにリポジトリを切り捨てるための正しいgitmojoを見つけることはできません。私はいくつかの変種を推測しています
git filter-branch
移植片を含むことが必要になるでしょう。また、保持したい200以上のブランチのそれぞれを個別に処理してから、レポにパッチを適用する必要がある場合もあります(私が知っている方法です)。
誰かがこのようなことをしたことがありますか?それが重要な場合、私はgit1.7.2.3を持っています。
ただ、作成グラフト(実際のルートは、リポジトリのコミット例えば、または空にコミットする)なし親にコミットする新しいルートの親のを。例えばecho "<NEW-ROOT-SHA1>" > .git/info/grafts
移植片を作成した後、それはすぐに有効になります。git log
不要な古いコミットがなくなったことを確認して確認できるはずです。
$ echo 4a46bc886318679d8b15e05aea40b83ff6c3bd47 > .git/info/grafts
$ git log --decorate | tail --lines=11
commit cb3da2d4d8c3378919844b29e815bfd5fdc0210c
Author: Your Name <[email protected]>
Date: Fri May 24 14:04:10 2013 +0200
Another message
commit 4a46bc886318679d8b15e05aea40b83ff6c3bd47 (grafted)
Author: Your Name <[email protected]>
Date: Thu May 23 22:27:48 2013 +0200
Some message
すべてが意図したとおりに見える場合は、単純git filter-branch -- --all
に実行して永続的にすることができます。
用心:やった後、フィルタ分岐ステップを、すべてのIDをコミットが変更されていますので、古いレポを使用して誰もが新しいレポを使用して、誰との合併はなりません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加