280

マスターではないブランチへの GitHub のプル リクエストをレビューしようとしています。ターゲット ブランチはマスターの背後にあり、プル リクエストはマスターからのコミットを示していたので、マスターをマージして GitHub にプッシュしましたが、それらのコミットと差分は更新後もプル リクエストに表示されます。GitHub のブランチに master からのコミットがあることを再確認しました。それらがまだプル リクエストに表示されるのはなぜですか?

また、プルリクエストをローカルでチェックアウトしましたが、マージされていないコミットのみが表示されます。

4

13 に答える 13

161

プル リクエストはターゲット ブランチへの変更を追跡していないようです (GitHub サポートに連絡したところ、2014 年 11 月 18 日に、これは仕様によるものであるという回答を受け取りました)。

ただし、次の操作を行うことで、更新された変更を表示することができます。

http://githuburl/org/repo/compare/targetbranch...currentbranch

githuburlorgrepotargetbranch、およびを必要に応じて置き換えcurrentbranchます。

または、hexsprite が彼の回答で指摘したようEditに、PR をクリックしてベースを一時的に別のブランチに変更し、再度戻すことで強制的に更新することもできます。これにより、次の警告が生成されます。

本当にベースを変更しますか?

古いベース ブランチからの一部のコミットはタイムラインから削除される可能性があり、古いレビュー コメントは古くなる可能性があります。

そして、PR に2 つのログ エントリが残ります。

ここに画像の説明を入力

于 2014-11-18T03:54:06.150 に答える
26

これに遭遇し、GitHub プル リクエストの動作に混乱している他の人にとって、根本的な原因は、PR がソース ブランチの共通の祖先とターゲット ブランチに対するソース ブランチのヒントの差分であることです。したがって、共通の祖先までのソース ブランチのすべての変更が表示され、ターゲット ブランチで発生した可能性のある変更は考慮されません。

詳細については、https ://developer.atlassian.com/blog/2015/01/a-better-pull-request/ をご覧ください。

一般的な祖先ベースの差分は危険に思えます。GitHub に、より標準的な 3 ウェイ マージ ベースの PR を作成するオプションがあればいいのにと思います。

于 2016-02-04T14:18:06.950 に答える
3

私が試したことと、なぜそれが起こっているのですか?

解決策はどれもうまくいきませんでした。GH のdiffの代わりに2 つのドットを使用すると、変更した内容にずっと近くなりました。しかし、まだすべての変更が正確に行われているわけではありません。.....

これは、GitHub がsquash マージされた変更を表示する方法に問題があるために発生します。ここで最もよく説明されています

基本的に次の場合に発生します。

  1. の変更をプッシュアップfeatureBranch
  2. スカッシュでマージしますmain
  3. 私がまだオンfeatureBranchになっている間にローカルで とマージしmainます。さらに変更を加えて、もう一度押し上げます。
  4. しかし、GitHub では、予想以上の変更が見られます。

これは git の問題ではないことに注意してください。代わりに、GitHub の問題です。GitHubスカッシュされたコミットが非スカッシュ コミットの合計と同一であるとは言えず、余分な差分が発生します。


解決

ローカルのメインで、メインにマージされていないすべての変更を取り消して隠します。それをするために私はしました。たとえば、PR に含まれていない 4 つのコミットがあり、スカッシュがマージされた場合、次のようにします。

  • git reset HEAD~4
  • git stash save "last 4 commits"

次に、隠したもので新しいブランチを作成します。手順:

  • git checkout main
  • git checkout -b newBranch
  • git stash apply
  • git add --all
  • git commit -m "some message"
  • git push
于 2021-09-23T20:19:13.337 に答える
0

正しい動作を取得する方法を見つけました (2020 年 11 月にテスト済み)。

競合の後git mergeおよび解決git merge --continueには、の代わりに使用する必要がありgit commit ...ます。

于 2020-12-09T09:18:45.007 に答える