2016-06-13 7 views
1

私は多くのモジュールを持つorigin gitリポジトリ(repo1)をフォークしています(A、B、Cとしましょう) (myname/repo1)。当時、私はforkからorigin repo(repo1)への変更を取り込み、origin repoはリファクタリングされ、各モジュールはgit repo(repoA、repoB、repoC)です。私は今repoAをフォークし、最初のフォーク(myname/repo1 - moduleA)から今回のフォーク(myname/repoA)にマージしたいと思っています。これどうやってするの ?gitを1つのフォークから別のフォークにマージする

答えて

1

これを処理するにはいくつかの方法があります。コミットIDとファイルの場所が変更されたため、マージすることはできません。おそらく、最も簡単なのは、変更を新しいリポジトリにリベースしてからマージすることです。ファイル名が移動したので、同様の変更を適用する必要があります。

最初の手順では、新しいリポジトリをリモートにすることです。 git remote add repoA url-to-repo-aおよびgit fetch repoA

次に、ブランチにrepoAを作成するのと同じファイル名の変更を適用する必要があります。これは--subdirectory-filterを使用してgit filter-branchで行うことができます。あなたの支店をチェックアウトした後、git filter-branch --subdirectory-filter moduleA/ master..HEADのようなものを実行してください。これにより、ディレクトリmoduleA/の内容が新しいルートになります。 master..HEADはその変更をあなたのブランチだけに制限します。安全のため、フィルタを実行する前に現在のブランチにタグを付けて、フィルタが間違っている場合の回復が容易になります。

これで正常にマージできるようになりました。

関連する問題