マスターといくつかのブランチを持つ上流の git リポジトリ (リモート) がありますが、目の前の議論で重要なのはブランチの 1 つだけです。
上流の:
x-------y--------> master
\
\
----z-----> develX
次に、x のアップストリームから自分のレポを複製します。
x--------y---------> master
\
\
-----z-------> develY
develY は、自分の作品と develX からのパッチ (z) を含む私のブランチです。私のマスターは少し時間を失っています。アップストリーム マスターからのパッチ (y) と、いくつかのパッチで動作するように微調整が行われていますが、実際には失われたケースであり、動作していません。
$ git checkout develY $ git merge -s ours master $ git checkout master $ git merge develY $ git push
したがって、master は develY とまったく同じです。しかし、私が本当に望んでいるのは、develY からの変更 (現在はマスターにもある) を使用して、マスターをアップストリーム マスターに同期することです。
私は当初、アップストリーム マスターの変更を自分のマスターにリベースしようと考えていましたが、リベースするアップストリームには約 6000 件のコミットがあり、これがうまく機能する方法はありません。このケースを私が当初考えていたよりも複雑にしているように見えるいくつかの問題があります。
- develY (および私のマージとマスターのプッシュ後のマスター) には、上流のマスターには存在しない可能性のある上流の develX からのパッチがいくつかあります。
- 私のマスターには、マージのために元に戻されたアップストリーム マスターからのコミットがいくつかあります。
- 上記の点により、
git merge-base master upstream/master
パッチ y が最後の共通の祖先として表示されますが、このパッチはマージで元に戻されたため、実際にはマスターにはありません。
マスターをアップストリーム/マスターと同期させ、develY からの変更をできるだけきれいに取得する方法に関する提案はありますか?