Git の「グラフト」とは何かを理解しようとしています。
たとえば、こちらの最新のコメントの 1 つで、Tobu はgit-filter-branchと.git/info/graftsを使用して 2 つのリポジトリを結合するとします。
しかし、なぜこれらの移植片が必要なのかわかりません。最後の 2 つのコマンドがなくてもすべて動作するようです。
Git の「グラフト」とは何かを理解しようとしています。
たとえば、こちらの最新のコメントの 1 つで、Tobu はgit-filter-branchと.git/info/graftsを使用して 2 つのリポジトリを結合するとします。
しかし、なぜこれらの移植片が必要なのかわかりません。最後の 2 つのコマンドがなくてもすべて動作するようです。
Gitウィキから:
グラフトポイントまたはグラフトは、2 つの別の開発ラインを結合することを可能にします。ユーザーがコミットのために偽の祖先情報を記録できるようにすることで機能します。このようにして、コミットが持つ親のセットが、コミットが作成されたときに記録されたものとは異なるふりをすることができます。
グラフトを使用する理由
グラフトは、別の SCM からインポートされた古い履歴のクローンをオプションで作成できるため、開発を git に移行するときに役立ちます。これにより、開発者が完全な開発履歴を利用できるようにしながら、最新バージョンをフォローしたいだけのユーザーのために初期クローンが保持されます。
Linus がカーネル ツリーを維持するために git を使い始めたとき、古いカーネル履歴を変換するツールは存在しませんでした。その後、古いカーネル履歴が bkcvs ゲートウェイから git にインポートされたときに、2 つの異なるリポジトリを結合できるようにする方法として接ぎ木が作成されました。
git-svn を使用する場合:
git グラフトは、Git ツリーを Subversion リポジトリにインポートするのに非常に便利です。
たとえば、最初にローカル Git リポジトリを作成しました。数日間作業し、多くのコミットを作成した後、中央の Subversion リポジトリに公開する必要がありましたが、履歴を失いたくありませんでした。
次のハウツー記事を見つけました: http://eikke.com/importing-a-git-tree-into-a-subversion-repository/