一部の Git コマンドはコミット範囲を取りますが、有効な構文の 1 つは 2 つのコミット名を 2 つのドットで区切ることであり..
、もう 1 つの構文では 3 つのドットを使用します...
。
両者の違いは何でしょうか?
ベストアンサー1
Git Log でコミット範囲を使用する
のようなコミット範囲をや とともに..
使用する場合、それらの違いは、ブランチAとBの場合、...
git log
git log A..B
は、Bが持っているがAが持っていないコミットをすべて表示します。
git log A...B
A が持つコミットと B が持たないコミットの両方、および B が持つが A には持たないコミットが表示されます。言い換えると、A と B の両方が共有するすべてのコミットが除外され、両方が共有していないコミットのみが表示されます。
ベン図とコミットツリーによる視覚化
以下は の視覚的な表現ですgit log A..B
。ブランチ B に含まれるコミットのうち A に存在しないコミットがコミット範囲によって返され、ベン図では赤で強調表示され、コミット ツリーでは青で囲まれます。
これらは の図です。両方のブランチで共有されているgit log A...B
コミットは、コマンドによって返されないことに注意してください。
トリプルドットコミットレンジを...
より便利にする
どのコミットがどのブランチに属しているかを表示するオプション...
を使用すると、ログ コマンドで3 つのドットのコミット範囲をより便利に使用できます。--left-right
$ git log --oneline --decorate --left-right --graph master...origin/master
< 1794bee (HEAD, master) Derp some more
> 6e6ce69 (origin/master, origin/HEAD) Add hello.txt
master
上記の出力では、 に属するコミットには というプレフィックスが付いており<
、 に属するコミットには というプレフィックスorigin/master
が付いていることがわかります>
。
Git Diff でコミット範囲を使用する
いつかコミット範囲がどのように機能するかについて独自の説明を追加するかもしれませんgit diff
が、今のところは、Git diff コミット範囲におけるダブルドット「..」とトリプルドット「...」の違いは何ですか?。