2016-05-02 17 views
0

私はいくつかの修正を行う必要があるプルリクエストを持っています。その間にマスターは多くのコミットを受けているので、修正を行う前にPRを更新する必要があります。 ローカルにチェックされたマスターから最初にリベースすると、PRブランチを強制的にプッシュすると、PRにマージの変更も含まれますか?Githubは既存のPRへのアップストリーム変更をマージする

私はちょうど私のPRをクリーンアップするように以前に似たような状況で私の変更を含む更新されたPRを持っていたいです。そんなことがあるものか?

+0

はい、マージも含まれます。チェリーを選んであなたのコミットを試すことができます –

答えて

1

ローカルでチェックされたマスターから最初にリベースしてから、自分のPRブランチを強制的にプッシュすると、PRにもマージの変更が含まれますか?

「ローカルにチェックされたマスター」にリベースしてプッシュすると、PRはローカルバージョンのマスターでのみ最新の状態になります。

git fetchの後にマスタをチェックアウトして元の場所からプルした後にリベースしてorigin/masterにリベースすると、新しいコミット(ブランチの履歴に新しい変更が含まれている)のみが含まれます。

私はちょうど私のPRをクリーンアップするように以前に似たような状況で私の変更を含んでいる更新されたPRを持っていたいと思います。そんなことがあるものか?

  • リベース:は、あなたのブランチを巻き戻します、リセットあなたがそれらのそれぞれのドキュメントを見なければならないが、ここではそれぞれの簡単な比較だ - rebasemerge -

2つのオプションがありますそれをリベースしてから、変更を再度適用してください。これは、ブランチが最新でない場合、元のから新しい変更が反映され、変更がより前に適用されることを意味します。リベースの開始時にマージの競合を解決します(履歴はおそらくコミットになります)、履歴が再実行されるときに必要に応じていつでも解決します。

  • 長所:あなたは多くの人々がこれをやって好きではない、プッシュを強制する必要があります:きれいな歴史に
  • 短所をコミットします。リベースするとコミットハッシュが変更されます。
  • マージ:は変更の上に起源から新しい変更を適用します。これは、あなたの変更が履歴に存在することを意味し、新しい変更がその前にあることを意味します。コミット履歴の末尾(通常はより簡単です)で一度だけ競合を解決します。
    • 短所:これは、コミットハッシュは変更されません。
    • 長所:強制的な押下は必要ありません。 GitHubの上の誰かが、彼らはおそらくあなたがリベースことを示唆している、それはコミットの歴史の面でクリーンに保たれ、そのように、あなたのブランチを更新するように要求されます場合
  • は、一般的に言って。

    GitHub上のリポジトリ所有者からのコミットも一緒にする必要があります。しかし、これはリベースでのみ可能ですが、GitHub now offers the ability to squash commits when merging pull requests、多くのリポジトリ所有者が今自分自身でできるように、あなたにスカッシュを要求することはありません。

    Here's a good comparisonアトラスによる。

    1

    作業を現在の上流のマスターの上にリベースし、強制的にプッシュすると、新しいPRブランチが古いものを置き換えます。したがって、古いコミットはPRから消え、新しいコミットがそこにあり、マージする準備ができています。

    +0

    ありがとうございました。マスターからの更新もそこにあるでしょうか?私は現在のPRを閉じて、新しいブランチ/ PRを作るべきですか? – Bruckwald

    +1

    なぜですか?ちょうど強制押し、すべてが良いでしょう。あなたの 'foo'から' master'と 'master'に対してPRを作成した場合、新しい' master'に対して 'foo'をrebaseし、衝突を修正して強制的に押してください。 – Vampire

    関連する問題