9

既存のSVNリポジトリがあり、その一部と履歴を既存のGitリポジトリにインポートしたいと思います。これを行うために必要なコマンドの概要を教えてもらえますか?

概要:

  • 既存のSVNリポジトリ内のいくつかのサブディレクトリを移動したい(ただし、リポジトリの残りの部分は移動しない)
  • それらのディレクトリをインポートしたい既存のGitリポジトリがあります
  • 移動したサブディレクトリだけの履歴を保持したい(他には何も保存しない)

git filter-branch私はこれが何かといくつかの奇妙な融合を伴うと感じています。どんな助けでもいただければ幸いです。

4

1 に答える 1

11

かなり複雑であることがわかりましたが、これが私がしたことです。

  1. 最初にSVNリポジトリを準備します。後でSVNからファイルを削除する予定だったので、すべてのファイルを1つのディレクトリに配置するのに役立ちました(これにより、filter-branch後で簡単になります)。

  2. gitを使用してSVNリポジトリをチェックアウトしました:git svn clone http://path/to/svnrepo。これにより、svnリポジトリのgitバージョンが作成されます。

  3. このSO投稿のアイデアを使用して、サブディレクトリを別のGitリポジトリにデタッチ(移動)し、を使用して、必要なfilter-branch --subdirectory-filterディレクトリをフィルタリングし、gitに保持したくない他のものの履歴をSVNから削除しました。gitサブディレクトリを抽出し、それからサブモジュールを作成する方法のgit subtreeように、新しい機能を使用することもできますか?

  4. 次に、このSO投稿のアイデアを使用して、2つのGitリポジトリをどのようにマージしますか?、追加したい親プロジェクトに新しいgitリポジトリをインポートしました。受け入れられた答えは正しくありません。そのページの他の答えを確認してください。を実行したいのに、git remote add git-proj <path>その後にgit pull

  5. 最後に、変更をgitプロジェクトにプッシュします。

于 2013-01-21T22:23:37.910 に答える