フォークされたリポジトリからプルリクエストを更新するにはどうすればよいですか?


592

それで、私は最初にレポをフォークし、次にそのフォークされたレポにコミットしました。次に、プルリクエストを開きました。プルリクエストには、必要なすべての変更がリストされています。

私のプルリクエストを確認した後、リポジトリオーナーが承認する前に、リポジトリオーナーがいくつかの変更を望んでいました。私はフォークでこれらの変更を行いましたが、プルリクエストをそれらの変更でどのように更新しますか(またはこれをどのように処理する必要があるのですか)?



7
@PaulDraper私は同意しません、そのユーザーはプルリクエストを更新するためのさまざまな方法をすでに知っていて提示しているので、どちらが最善か尋ねます。一方、私はどんな方法も知らず、それらの存在について尋ねていました。この質問の人気が示すように、これは他の多くのユーザーにも当てはまります。
stevebot 14

6
この人気の理由は、(1)これは非常によくある一般的な質問であり、(2)一部のユーザーがここではなくここに巻き込まれているためです。元々重複として識別されていた場合、彼らは他の質問が同じであることに気づき、彼らの質問に答えたでしょう。
Paul Draper 14

回答:


585

あなたはそれを正しく行いました。プルリクエストは自動的に更新されます。プロセスは次のとおりです。

  1. プルリクエストを開く
  2. ローカルリポジトリのフィードバックに基づいて変更をコミットする
  3. フォークの関連するブランチにプッシュする

プルリクエストは、プルコミットディスカッションの下部に新しいコミットを自動的に追加します(つまり、すでにそこにあります。下にスクロールしてください!


73
いいね!実際のプルリクエスト以外はどこでもチェックしていました。その魔法、黒魔法、私はそれを疑うつもりはありません。
stevebot 2012年

57
これは、支店で働くのにふさわしい理由です。たとえば、常にマスターにプッシュした場合、以前のプルリクエストに誤って追加する可能性があります。
ブライアンパン

3
これは過去にあったとしても、もはやそうではないようです。ここで私は(作られたプル要求の例ですgithub.com/toopay/bootstrap-markdown/pull/167枝自体(と比較して)github.com/mhuggins/bootstrap-markdown/commits/...)。プロセスが変更されたようなので、これを行う方法に興味があります。
Matt Huggins、2015

1
GitHubは実際に次のように伝えています。「ChangeTheWorldProjectのSolveWorldHungerブランチにプッシュして、さらにコミットを追加します。」
flow2k 2017

1
ここでも同じです-メインリポジトリにフォークされたリポジトリからの変更はありません。GitHubバグのように見える
andrfas

78

GitHubでのプルリクエストの更新は、(プルリクエストで使用された)既存のブランチに必要な変更をコミットするのと同じくらい簡単ですが、多くの場合、変更を1つのコミットに押しつぶしたい場合もあります。

git checkout yourbranch
git rebase -i origin/master

# Edit command names accordingly
  pick   1fc6c95 My pull request
  squash 6b2481b Hack hack - will be discarded
  squash dd1475d Also discarded

git push -f origin yourbranch

...そして今、プルリクエストにはコミットが1つだけ含まれています。


リベースに関する関連リンク:


2
リベースについて言及することへの賛成票。変更履歴のノイズを取り除くのに役立ちます。
stevebot 14

+11(はい私はキーrrrrepeatingを意図したgitのリベースを使用する/ピック/スカッシュは素晴らしい取り組んでいる。。
javadba

11
このアプローチの欠点は、以前のコミットを削除することです。つまり、プルリクエストでコメントが作成された場合、コメントは失われ、元のコミットとともに消えます。
blowekamp

Bitbucketでは、プルリクエストでファイルの「以前のバージョン」に関するコメントを確認できます。Gerritのようにコミットにパッチを当てて、コメントで履歴全体を確認できるようなものを見るとよいでしょう。戻って、コミットに関する完全な議論を見ることができるとき、それはきちんとしたgitの履歴とトレーサビリティになります。

36

プルリクエストが参照するブランチにプッシュするだけです。プルリクエストがまだ開いている限り、追加されたコミットで自動的に更新されます。


14

私は以下の手順でそれを行いました:

  1. git reset --hard <commit key of the pull request>
  2. 私がやりたかったコードの変更はありましたか
  3. git add
  4. git commit --amend
  5. git push -f origin <name of the remote branch of pull request>

1
とても良い、私はこのアプローチを好む!GitHubは、コードの古いセクションや関連するコメントを隠します(ただし保持します)。プルリクエストに複数のコミットが含まれていて、修正が必要なものがブランチの先端にない場合、「git reset --hard」は指定されたIDの後にコミットされたすべての変更を破棄することに注意してください。手動で適用したバックアップがありました。ただし、追加のコミットが2つ以上ある場合はあまり便利ではありません...
Nagev

3

WindowsでGitHubを使用している場合:

  1. ローカルで変更を行います。
  2. GitHubを開き、ローカルリポジトリに切り替え、リポジトリをダブルクリックします。
  3. ブランチ(ウィンドウの上部近く)をプルリクエストを作成したブランチ(つまり、比較のフォーク側のブランチ)に切り替えます。
  4. 右側にコミットコメントを入力し、ローカルリポジトリに変更をコミットするオプションが表示されます。
  5. 上部にある[sync]をクリックすると、GitHubのコミットがローカルからリモートフォークにプッシュされます。
  6. プルリクエストは追加のコミットで自動的に更新されます。これは、プルされたリクエストがフォークのブランチとの差分を表すためです。プルリクエストページ(自分や他の人がプルリクエストにコメントできるページ)に移動すると、[コミット]タブに追加のコミットが表示されます。

これが、独自の変更を始める前に、プルリクエストに入れる予定の変更のセットごとにブランチを作成する必要がある理由です。このようにして、プルリクエストを作成したら、別のブランチを作成して、以前のプルリクエストに影響を与えることなく、他のタスク/機能/バグ修正の作業を続行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.