2

というわけでこんな状況です。

  • svnリポジトリがありました(オープンソース)
  • git-svn を使用して自分のレポ (B と呼ばれる) にクローンを作成し、少し分岐しました。svn レポの所有者は、当時 PR を取得することに興味がありませんでした。
  • 最後に、svn リポジトリの所有者は git に移動します。このリポジトリを C と呼びましょう。所有者は、インポート時に履歴を保持していませんでした :( [参考までに、リポジトリの所有権を譲渡することを申し出ました]

今後 C からプルできるようになったことをレポ (B) に通知できるようにする必要がありますか? これを行う良い方法はありますか?グラフを見ましたが、かなり混乱していました。

よろしくお願いいたします。

4

2 に答える 2

3

リポジトリに両方のリモートを保持できます。リポジトリに 2 つの独立したブランチがあるだけです: git-svn の古いものと新しいもの (新しいものは git-svn のものと一致しないため) .

それらの間で差分を取り、C にプッシュおよびプルし、現在のブランチを C にリベースすることができます。

リモート URL を変更して取得するだけです。

git remote set-url origin <new-url>
git fetch origin

また、タグを使用して最後の SVN ヘッドを追跡する必要があります。

于 2013-08-03T14:59:11.603 に答える
2

あなたが試すことができます:

git remote add neworigin /path/to/origin
git fetch neworigin
git checkout -b newmaster neworigin/master
git checkout master
git rebase newmaster
git branch --set-upstream master neworigin/master

私はあなたの状況でこれを試みたことがなく、簡単にテストする方法はありませんが、これはうまくいくようです. その時点に到達し、すべてがうまくいった場合は、古いリモコンを取り外して、次のように少しハウスキーピングを行うことができます (古いリモコンの名前が「origin」であると仮定します):

git remote rm origin
git remote rename neworigin origin

これがテストされていないことを考えると、使い捨てブランチまたはローカル リポジトリのコピーでこれを試す価値があるかもしれません。

于 2013-08-03T15:03:53.673 に答える