2017-09-07 22 views
0

私は私の問題を説明しようとします。 Bevor 2015には1つの大きなSVNリポジトリがありました。誰かがプロジェクトを小さなリポジトリに移動したりコピーしたりするのが良いと思います。 これで、SVNからGITへ移行し、GITのリポジトリと履歴の変換時に、プロジェクトが移動またはコピーされた日に開始されます。 古い履歴も必要なので、私は検索して、新しいリポジトリの履歴を古いリポジトリの履歴とマージすることが可能であることを発見しました。 これは、新しいリポジトリの最初の履歴エントリを、新しい履歴のソースであった大きなリポジトリの履歴の短いものから置き換えるために "git replace"を使用します。 この作業と私は、古い履歴からプロジェクトを移動する前に、新しいリポジトリの最初のエントリと最後のエントリだけを失いました。 しかし今、大きなリポジトリにあったすべてのプロジェクトの履歴があり、GITリポジトリは非常に大きくなっています。 このリポジトリに含まれないプロジェクトの履歴や周囲を削除する方法はありますか? ご協力いただきありがとうございます!他のリポジトリから履歴情報を削除しますか?

答えて

0

はい。通常、リポジトリから削除するのは非常に問題ですが、使用を開始したばかりなので(おそらく現在のコミットに対するクローンや参照はほとんどありません)、これがおそらく最良の選択です。

あなたはrebase --interactiveを使用して、歴史を編集あなたが望むように、しかし、あなたはちょうどそのリポジトリを使用して開始し、実際にので、あなたはおそらく同様に(潜在的に問題ハックです)そのreplaceを取る機会を取るべきである可能性があります。
リポジトリの再変換は、必要なコミットのみを元に戻してください。

このようなことに慣れていない方は、変換を行う人を見つけたほうがいいでしょう。gitを学ぶ過程で、標準的な性交をすでにしているでしょう。あなたは何ヶ月も何年にもわたって地獄のような経験を探しています。一方、すでにgitリポジトリ上で重要な新しい仕事をやった、あなたは、すべての権利をその歴史を変え、それを維持し、唯一の古い歴史を再変換したくない場合は



その後、前のreplaceを削除し、新しいものを追加して再変換された履歴をリンクします。
交換を使用する場合、コミットを失う必要はありません。それをよく見たり、経験豊富な人に尋ねてみてください。私は広範な段階的な説明をここでは望んでいませんが、基本的には、歴史の最近の部分の最初のコミットを、最後のものに編集された親を除いて同じコピーに置き換える必要があります最も最近の)古い履歴のコミット(これはもちろん、古い履歴のオブジェクトを新しいリポジトリにインポートした後のものです)。

関連する問題