1

大きな svn リポジトリ (git svn clone) から git-svn でリポジトリを作成しました。私のgitリポジトリには、svnにプッシュする必要のないローカルコミットがいくつかありますが、そこから更新を取得する必要があります。

これで、ローカル リポジトリに svn 履歴全体が必要ないことに気付きました。これは、スペースが多すぎるため (数 Gb)、クローン コマンドで -r オプションを使用して開始点を選択する必要があったためです。

新しいリポジトリで最初からやり直してから、古いリポジトリからすべてのローカル コミットをマージするようにリンクしますが、これを行う簡単な方法があるかどうかはわかりません。

状況は次のとおりです。

古いリポジトリのログ:

  • ローカルコミット 10
  • ローカルコミット 9 ...
  • ローカルコミット 1
  • svn リビジョン X
  • svn リビジョン X-1 ...
  • svn リビジョン 1

新しいリポジトリには、svn リポジトリのリビジョン X の競合に対応するコミットが 1 つだけあります。

format-patch および apply コマンドを使用しようとしましたが、これを行う方法がわかりません。

必要なことを行う方法はありますか?

助けてくれてありがとう

4

2 に答える 2

2

1 つの方法は、新しいリポジトリで:

  • git remote add old古いリポジトリに。
  • git fetch old;
  • 必要なブランチをチェックアウトします。
  • 変更前にブランチが作成された場所からの開始点を知るため。
  • を使用しますgit rebase --onto

完了するとgit remote rm、古いレポとgit gc.

git help rebaseオプションについては、参照してください--onto。非常に便利です。

于 2011-12-16T16:49:27.077 に答える
2

SVN リポジトリからリビジョン X をチェックアウトし、SVN 関連のすべてのフォルダーを削除することから始めることができます。それからgit init && git add . && git commit -m "Importing revision X from SVN"。これで、SVN のリビジョン X のスナップショットを含む Git リポジトリができました。

その後git format-patch、古い Git リポジトリからパッチを作成するために使用できます。git format-patch x..ここxで、SVN のリビジョン X に相当するコミットです。パッチファイルが生成されます。古い Git リポジトリで実行します。

その後、新しいリポジトリgit am all_those_patches.*で、それらを新しいリポジトリに適用できます。

参照。man git-amman git-format-patch

于 2011-12-16T16:52:07.633 に答える