web-dev-qa-db-ja.com

Githubプルリクエストを変更する方法は?

プロジェクトへのプルリクエストを開きました。メンテナーはそれを受け入れることに決めましたが、いくつかの内容を変更するように私に言いました。

どうすればいいですか?コミットハッシュを変更しないで保持する必要があるかどうか、どうすればできますか?

147
flygoast

リクエストの対象となるブランチにさらにコミットをプッシュするだけです。プルリクエストはこれを選択します

例:

Bをmasterにマージしたい場合

  1. C1、c2、c3をbにプッシュします
  2. 次に、bの新しいリクエストを作成します
  3. レビューされ、さらにコミットが必要になります
  4. C11、c21、c31をbにプッシュします
  5. プルリクエストには、6個の6個のコミットがすべて表示されます。
163
Daij-Djan

プルリクエストに1つのコミットがあり、git commit --amendを使用して更新しました。次に、git Push -fを使用して強制プッシュを実行したため、修正されたコミットが元のコミットに置き換わりました。プルリクエストは自動的に新しいコミットを取得しました。 (実際には両方のコミットが表示されていましたが、ページをリロードすると古いコミットが消えていました。)

したがって、一般的に強制プッシュは推奨されませんが、プルリクエストには役立ちます。誰かがあなたのコミットをベースにしている場合、変更後にリベースを行う必要があるため、お勧めしません。しかし、誰もレビュー中のプルリクエストに基づいて作業を行うべきではないため、この状況ではかなり安全です。

32
Malvineous

引き続き変更を加えて同じブランチにプッシュし続けると、洗練されたコミットが同じプルリクエストに追加されます(プルリクエストがマージされていない場合)。これにより、履歴が非常に乱雑になる可能性があります。

私が使用する代替ソリューションと手法は次のとおりです。

  1. 以下を実行して、プルリクエストを送信するリポジトリ(アップストリーム)およびブランチ(開発)から新しいブランチ(修正)を作成します。

    gitブランチでアップストリーム/開発を修正

  2. 洗練されたコミットをこの新しく作成されたブランチに直接追加します。

    git commit -m "メッセージ"

  3. このブランチを独自の分岐リモートにプッシュします(Originという名前の場合もあります)。

  4. 新しいプルリクエストをクリーンコミット履歴と比較して送信します。
  5. また、プルリクエストがマージされた後にブランチを削除することをお勧めします。
  6. また、以前のプルリクエストにコメントして閉じることができます。
7
user_19

github api を使用することもできます。

curl の例

curl --user "your_github_username" \
     --request PATCH \
     --data '{"title":"newtitle","body":"newbody",...}' \
     https://api.github.com/repos/:owner/:repo/pulls/:number

詳細なデータのリストは github developer doc にあります。

例: my pull request の名前を変更します

curl --user "jeremyclement" \
     --request PATCH \
     --data '{"title":"allows the control of files and folders permissions."}' \
     https://api.github.com/repos/Gregwar/Cache/pulls/9
1
hexaJer