web-dev-qa-db-ja.com

Gitで、ブランチの最初のコミットをどのように比較しますか?

ローカルブランチに対していくつかのコミットを行いましたが、現在持っているものをブランチの開始状態と比較するための最良の方法がわかりません。ブランチへのコミットが6回あれば、git diff HEAD HEAD~6のようなことができることはわかっていますが、コミットの数に依存しない何かを望んでいました。

編集:私はこれについて言及しませんでした:私が分岐したコミットのハッシュを取得するためにログを掘り下げる必要がないことを望んでいました。たとえば、80のコミットがある場合、これは楽しい作業ではありません。

また、私が分岐した元のブランチにはすでにいくつかの変更が加えられていると想定します。

44
Newtang

git help diffで説明されているトリプルドット構文を使用することをお勧めします。

git diff otherbranch...

これは次と同じです:

git diff otherbranch...HEAD

これは次と同じです:

git diff $(git merge-base otherbranch HEAD) HEAD

merge-baseコマンドは、「最良の」(最新の)共通の祖先を出力するため、上記のコマンドは、HEADotherbranchからHEADに共通する最新のコミットとの違いを示しています。

otherbranchの代わりに@{u}を使用して、アップストリームブランチから分岐してから行った変更を確認できることに注意してください。構文の詳細については、git help revisionsを参照してください。

64
Richard Hansen

git diff <SHA-1 of the commit from which you branched>..HEAD

git logを実行すると、分岐点のSHA-1を取得できます。

0
yasouser

まず、 分岐元のコミットを見つける する必要があります。それができたら、(yasouserが指摘したように)git diff <branch-point>..HEADを実行するだけです。

0
vhallac