2012-11-26 6 views
11

GitHubの共通のワークフローでgitの問題に取り組んでいます。私はレポ 保留中のプルリクエストで上流のgitの変更をマージする

  • をフォーク

    1. は私が
    2. は、私は上流の開発者が自分のプル要求に座っている間レポに
    3. ひねりの親指を上流へプル要求を行い、いくつかの変更をコミットします。
    4. アップストリームの開発者はレポを変更します
    5. 彼らはあなたのプルリクエストを見ますが、そのツリーの変更のためにそれはもはや完全に適用されないので、プルリクエストを更新するように頼みます。
    6. アップストリームから私のレポに変更をマージして、コンフリクトを解決し、変更をコミットします。
    7. プルリクエストでコミットをリベースして、きちんと整理します。

    私のプルリクエストに、上流の開発者自身の変更を含むステップ2と7の間で発生したすべての変更が含まれるようになりました。最近の例では、これは10行のプル要求を12,000行以上に拡張しました。

    プルリクエストに変更を加えずに、元のコミットを新しいバージョンのアップストリームレポに再適用する必要がありますか?

  • 答えて

    11

    変更この

    7)私は&は、私のレポに上流からの変更をマージ競合を解決する、変更をコミットフェッチ。

    8)私はプルリクエストでリベースして、きちんと整理します。

    に私はそれがきちんと整頓作り、上流の上に私のレポをリベース。これは、現在のマスターの上にあなたのコミットを再生します

    git rebase -i upstream/master 
    

    :あなたは、上流/マスターからこのブランチをフォークと仮定

    。競合を解決した後の最終的な結果は、あなたが今すぐフォークしたかのようになります。

    +2

    これは明らかにそれを行う正しい方法ですが、私はそれがひどく爆発したと確信しています。それは、また間違って行くことができますフォローアップのステップがある - 私は自分のrepoにこのrebaseを '原点マスター'をプッシュするとき、あなたはあなたが '--force'を指定することが重要であるか、すべてを混乱させることができますもう一度。 – Synchro

    2

    あなたがすでにこれをやっているなら、私はできませんが、プルリクエストのコミットをするときは、最も簡単な方法は、別のブランチを作ることです。

    このようにして、プル要求にコミットする必要のあるものを簡単に定義できます。また、後でプル要求を更新して新しい変更を含めることもできます。

    アップストリームの新しい変更を組み込む場合は、それらをフェッチしてトピックブランチにリベースすることができます。

    githubの中にプル要求を行うときに、あなたが正しいコミットをして引っ張られる確認します。このブランチを、選択することができます。

    あなたは、このブランチにプッシュするたびに更新されます(でも-f押します)自動的にプルリクエストを送信します。

    +0

    残念ながら、それは役に立たないでしょう。ブランチでまったく同じ問題が発生する可能性があるので、問題を動かすだけです。ここであなた自身の変更の下で敷物を引っ張るという要素があります。私が探しているのは、私の変更を別のポイントから再適用する方法ですが、ここでは自分の変更が私の古いフォークに適用されたようにアップストリームからプルするので、あまりにも多くの変更が含まれています。 – Synchro

    関連する問題