2011-09-18 9 views
9

すなわちをコミットする前にどのように歴史を除去するために、私が持っている:Gitリポジトリ:特定の

root -- c1 -- c2 -- .. - c1000 -- c1001 -- c1002 -- .. -- c2000 -- top 

と私が持っていると思います:

root = c1000 -- c1001 -- c1002 -- .. -- c2000 -- top 

どのように?

は(私はgit filter-branchを経由して行うことができますね、しかし、どのように正確に?)

(もちろん、私は、これは歴史の書き換えを意味していることを知っている...)

答えて

4

最も簡単な方法は、gitの移植です。あなたは、ファイル.git /情報/移植片を編集する場合は、任意の左側に参照コミット

[ref] [parent1] [parent2] ...

が右に記載されている親がいるかのように扱われる形式のファイルの行を置くことができますそのコミットの両親。だから、

c1000

のような行を挿入することができ、それが親を持たないかのように、扱われます。これはgit-filter-branchを実行することで "焼き尽くされる"ことができます。

私は(私はあなたがコミットする前に歴史を削除すると言うとき、あなたが求めている何を考えている)別のルートで新しいリポジトリを作成するための便利なの下に発見した
9

git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout) 

(あなたが上記の操作を行うことができます同じレポでも)

+0

大きなヒント!別のプロジェクトのブランチからきれいなプロジェクトを作成するのにとても便利ですが、git filter-branchの手間はありません。 – Claudio

+0

この投稿はかなり古いですが、私は答えを得ることを願っています。インポート中にコミットIDを保持する方法はありますか? –

関連する問題