2 つの小さな git リポジトリがあります。プロジェクトは両方とも異なるポイントから開始されましたが、非常に類似したもの (同じファイル名、フォルダー構造など) に収束しました。一方は他方の分岐ではありませんが、一方は他方の進化と見なすことができます。
repo2
の続きになるように、2 つをマージできればいいのですがrepo1
。の履歴repo2
を の末尾に追加しながら、これは可能repo1
ですか?
2 つの小さな git リポジトリがあります。プロジェクトは両方とも異なるポイントから開始されましたが、非常に類似したもの (同じファイル名、フォルダー構造など) に収束しました。一方は他方の分岐ではありませんが、一方は他方の進化と見なすことができます。
repo2
の続きになるように、2 つをマージできればいいのですがrepo1
。の履歴repo2
を の末尾に追加しながら、これは可能repo1
ですか?
1 つを別のものにフェッチできます。
$ cd project1
$ git config remote.project2.url /path/to/project2
$ git config remote.project2.fetch 'refs/heads/*:refs/project2/*'
$ git fetch project
これにより、project1 と project2 の履歴を含む 2 つ (またはそれ以上) のブランチが得られます。それらは依然として完全に独立しており、同じオブジェクト ストアを使用するだけです。
次に(テストされていません)、コミットの親を上書きできるグラフトファイル( )を使用できます(project2の最初の親がproject1の最新のものを持つように).git/info/grafts
ダスティンがコメントで述べているように、プロジェクト 2 のコミットをプロジェクト 1 にリプレイすることにより、「永続的にする」ためにリベースが必要です。
この「Using Git within a project (forking around)」ブログエントリ、特に「How to pull friends and impact people」セクションに別の図があります。また:
git checkout two_point_ooh
git remote add strelau git://gitorious.org/ruby-on-rails-tmbundle/mainline.git
git checkout -b strelau/two_point_ooh
git pull strelau two_point_ooh
同様のプロセスですが、フォークされたリポジトリの場合(これはあなたのケースではありません)