3

一日中 Google を使った後は、専門家に助けを求めなければなりません。

git に変換したパブリック SVN リポジトリのクローンを作成しました。このリポジトリには master ブランチが 1 つだけあり、特定のバージョン (1.0 など) から開始されます。

独立して作成された、同じ 1.0 バージョンから始まる git リポジトリもあります。これを作成したのは、いくつかの公共プロジェクトをハッキングしたかったからです。ソース コードをダウンロードし、空の git リポジトリを作成し、バージョン 1.0 を追加して、ハッキングを開始しました。このレポにも master ブランチしかありません。

ここで、バージョン 1.0 を出発点として、「svn」と「mystuff」の 2 つのブランチを持つ 3 つ目の git リポジトリを作成することにします。両方のブランチの履歴を保持したいと思います。

       1.0
      /   \
     /     \
br. svn    br. mystuff
     |       |
   v1.1      v1.1'
   v1.2      v1.2'
   v1.3      v1.3'
    .          .
    .          .

これがあれば、svn2git を使用して SVN リポジトリから新しいリビジョンを簡単に取得でき、ローカルの「mystuff」ブランチと簡単にマージできます。SVN リポジトリにプッシュする必要はありません。そこから新しいリビジョンを取得するだけです。

git の使用を再び楽しくするのを手伝ってくれませんか?

4

1 に答える 1

2

一種のハッキーな方法はgit format-patch、リポジトリのすべてのコミットをディレクトリ、git checkout他のリポジトリ1.0ブランチにエクスポートし、新しいブランチ ( git checkout -b new-branch) を作成してからgit am、以前に生成されたパッチを作成することです。

それでは、publicパブリック SVN リポジトリのクローンとlocal、ソースをダウンロードしてハッキングして作成した git リポジトリを呼び出しましょう。

cd local
mkdir ../patches

# -o tells the output directory for the patches
# the git log ... gives you the hash of the second commit of the repo (the first one
# changes are already present in your 'public' repo
git format-patch -o ../patches/ $(git log --pretty=format:%H | head -n-1 | tail -1)

cd ../public
git checkout -b mystuff 1.0
# Apply patches
git am ../patches/*
于 2012-11-17T16:50:00.930 に答える