0

マスターといくつかのブランチを持つ上流の 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 からの変更をできるだけきれいに取得する方法に関する提案はありますか?

4

1 に答える 1

0

git merge origin/masterfromを実行する必要があると思いますmaster

「うまくいかない」と言うとき、どういう意味ですか? 2つの多くの競合がありますか?真の競合があり、両方の変更セットが必要な場合は、手動で編集してそれらを解決する必要があります。

git rebaseとにかく、私git fetchが最新のマスターになり、その上に作業をリベースして、発生する競合を解決するためのルートです。git rebase -i HEAD~10私は最初に自分のブランチ コミットをスカッシュ/並べ替え/削除するために頻繁に使用します。

于 2012-09-28T12:08:55.387 に答える