2016-06-27 5 views
1

私はそれ自身が正しく動作するようにすべてのコードを含むproject1を持っています。 Project2はproject1と同じコードベースを使用していますが、修正、新機能などを持っています。Git(hub)が独自のrepo-pull要求をフォークします

2つのプロジェクトの目標が若干異なるとすれば、私はそれらを独立して扱いますが、(バグ修正のような)両方のプロジェクト、私は1つの変更を行い、他の人にプルリクエストを行います。それ以外の場合、2つのプロジェクトは互いに気づいていないかのように行動します

githubでこのタイプのワークフローを設定するにはどうすればよいですか?私は自分自身のレポをforkする方法についてここでは、スレッド/質問の数を読んだが、これまでのところではない私の問題

のthats、私が持っている:

  • は、新しい空のレポ(のProject2)
  • を作成しました私のマシンに
  • クローンのProject2
  • は、上流
  • から変更をプルダウンされ、新たな上流の遠隔(project1に)
  • がProject2のアップからのProject2レポ
  • にコードをプッシュ追加しました

これは本質的に私にはproject1の完全なコピーを与えますが、project2のrepoではあります。私は自分の問題の半分を解決するために、それぞれのレポを独立して実行することができます。

ここで、バグ修正のようなものがコミットされ、両方にプッシュされたらどうしますか?

githubでproject2に行き、プルリクエストをクリックすると、私はproject2ブランチとproject2フォークからのリクエストしか見ることができません。私はproject1から何も見ない。 Project1からプルリクエストをチェックするときも同様です。

2つのプロジェクトは実際のフォークとは違って見える(私は思う?)ので、どのようにバグを修正し、これら2つのレポからプルリクエストを作成するのですか?

2つのプロジェクトの共通の変更を取り込み、マージするために、2つのわずかに異なるリポジトリを処理する方が良い/適切な方法がありますか?

答えて

1

はい。秘密は、git remoteを組み合わせて、2つ以上のgithub reposからローカルのgitリポジトリを取得させ、git cherry-pickを使用すると、現在のブランチの他の場所からコミットを再適用できます。すでにProject1の上コミット行ったと仮定すると、

、あなたが実行されることがあります

cd ~/project1 
git log 

commit c947d3c40c2d479d6c79fa9894b352ac9210e5c5 
Author: Brian Malehorn <> 
Date: Mon Jun 27 17:29:02 2016 -0700 

    fixed the thing 

cd ~/project2 
git remote add project1 github.com/brian/project1 
git fetch project1 
git log project1/master 

commit c947d3c40c2d479d6c79fa9894b352ac9210e5c5 
Author: Brian Malehorn <> 
Date: Mon Jun 27 17:29:02 2016 -0700 

    fixed the thing 

git checkout -b fixed_the_thing 
git cherry-pick c947d3c40c2d479d6c79fa9894b352ac9210e5c5 
git push --set-upstream origin fixed_the_thing 
関連する問題