master
と別のブランチA
の間で Github比較ビュー を実行すると、Githubは、HEAD A
のバージョンと、master
の古い非ヘッドバージョンとを比較しているようです。
私はそれを調べましたが、GithubがブランチA
をmaster
の共通の祖先と比較しているように聞こえます。実際にmasterのHEAD
にあるものと実際には比較していません。
GithubのHEADに対してマスターのHEADブランチA
を比較する方法はありますか?
そうでない場合は、なぜですか?これは、すべての開発者ができるようにしたい機能のようです。それとも、私がおそらく行方不明になっている、実行すべきプロセスがありますか?これらの差分の1つから直接プル要求を作成できるようにしたいと思います。
EDIT:ここに問題を示すレポの例があります
https://github.com/bradparks/test_github_diff_view
v100
が含まれるように設定します。A
に分岐し、行を「v200」に変更しました次に、マスターブランチの値を「v300」に変更し、比較リンクを使用して2つのブランチを比較しました
https://github.com/bradparks/test_github_diff_view/compare/A
次の予期しない結果が表示されます。 v300
ではなくv100
と比較しないのはなぜですか?
マスターのHEADをGithubのブランチAのHEADと比較する方法はありますか?
2018年9月 :はい:GitHubは「 ドットと2ドットのGit diff比較 」を明示的にサポートするようになりました。 ここの例 を参照してください。
keisuke 言及 コメント内 a Bitbucketの同様のイニシアチブ 。
元の回答2015:
いいえ:「 GitHubブランチの現在のバージョンのビューの比較 」で述べたように、GitHubはトリプルドット(...)範囲のショートカット仕様のみをサポートします。
あれは:
このフォームは、両方の共通の祖先から始まる2番目までのブランチの変更を表示します。
「_
git diff A...B
_」は「git diff $(git-merge-base A B) B
」と同等です。
のいずれか1つを省略できます。HEADを代わりに使用した場合と同じ効果があります。
公式GitHubヘルプ は、この機能を次のように言及しています。
Compareの最も一般的な使用法は、新しいプルリクエストを開始するときなど、ブランチを比較することです。
そのシナリオでは、PRブランチはmasterから始まります(または、とにかくmasterのトップにリベースする必要があります)。つまり、master HEADはmasterとPRブランチの間のベースです。
しかし、2つのブランチが分岐した場合、比較はHEADs
の間ではなく、1つの共通の祖先と1つのHEADの間で行われます:git diff $(git-merge-base master B) B
。
注:「 Comparing commits 」に明確に記載されているように、2つのSHA1を直接指定した場合でも、stillgit diff $(git-merge-base A B) B
を実行します。
それは、not2つのコミット間で直接diffを行います。
ちょうど別の考え。作業とマスターブランチのヘッドとの差分からプルリクエストを作成する場合(o.p.に従って)、最初にマスターブランチから独自のブランチをリベースする必要がありますgit rebase <master>
そしてプル要求を行います。
ただし、通常はこれを行う必要はありません。Gitはマージに非常に優れており、通常、リベースしなくても、追加したいとおりにマスターブランチに作業を追加できます。
マスターのHEADをGithubのブランチAのHEADと比較する方法はありますか?
[[〜#〜] edit [〜#〜]:いいえ、間違っていました。私が管理したURLは正しいことをしているように見え、ページの差分は正しく見えましたが、それは偶然でした。もっと詳しく知りたい場合は、この回答の履歴を確認してください。]