8

2 つの小さな git リポジトリがあります。プロジェクトは両方とも異なるポイントから開始されましたが、非常に類似したもの (同じファイル名、フォルダー構造など) に収束しました。一方は他方の分岐ではありませんが、一方は他方の進化と見なすことができます。

repo2の続きになるように、2 つをマージできればいいのですがrepo1。の履歴repo2を の末尾に追加しながら、これは可能repo1ですか?

4

1 に答える 1

6

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

同様のプロセスですが、フォークされたリポジトリの場合(これはあなたのケースではありません)

于 2009-03-16T18:30:11.387 に答える