Gitの中に「..」とトリプルドット二点間の違い「...」の範囲をコミットは何ですか?
Gitのログとの範囲をコミット使い方
あなたのような範囲コミット使用しているとき..
と...
ではgit log
、それらの間の違いは、支店AおよびBのため、ということです
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
。されているコミットていることに注意してください共有両方のブランチでは、コマンドによって返されません。
トリプルドット範囲をコミット作る...
より便利に
あなたはトリプルドット範囲にコミットすることができます...
使用することで、より便利logコマンドで--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の差分と範囲をコミット使い方
いつか私がコミット範囲がでどのように動作するかについて、私自身の説明加えるかもしれないgit diff
が、今のところ、あなたがチェックアウトする場合がありますダブルドットとの違いは何ですか「..」とトリプルドットを「...」Gitの差分にコミット範囲は?。
参照してください
https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection#Commit-Ranges
ダブルドット
最も一般的な範囲の仕様は、ダブルドット構文です。
これは、基本的には、1つのコミットから到達可能であるが、別の到達できないコミットの範囲をGitに要求します。
たとえば、あなたが持っているように見える歴史コミット言う 範囲選択のための例の歴史を。。
あなたが見たいと言うあなたにあるもの experiment
はまだあなたにマージされていない枝 master
の分岐。
あなたはあなたとちょうどそれらのコミットのログを表示するにGitを求めることができます master..experiment
-つまり、「すべてはマスターから到達できない実験から到達可能なコミットします。」
これらの例では簡潔にする目的简洁と明瞭清楚するために、図からコミットオブジェクトの文字は、彼らが表示されるだろうと順番に実際のログ出力の代わりに使用されています。
$ git log master..experiment
D
C
一方、あなたが反対の見たい場合は-のすべてのコミット master
ではありません experiment
-あなたはブランチ名を逆にすることができます。 experiment..master
あなたのすべてを示して master
から到達可能ではないが experiment
:
$ git log experiment..master
F
E
保存しておきたい場合に便利です experiment
日付への分岐までを、あなたがマージしようとしているものをプレビューします。この構文のもう一つの頻繁な使用は、リモートにプッシュしようとしているかを確認することです。
$ git log origin/master..HEAD
このコマンドは、あなたはしていない現在のブランチにコミット示し master
、あなたのブランチ origin
のリモート。あなたが実行している場合は git push
、あなたの現在のブランチを追跡している origin/master
、で列挙されたコミットが git log origin/master..HEAD
サーバーに転送されますコミットがあります。また、Gitが前提と持っている構文のどちらか片方を省略することができます HEAD
。たとえば、次のように入力して、前の例と同じ結果を得ることができます git log origin/master..
Gitの代替を- HEAD
片側が欠落している場合。
トリプルドット
最後の主要な範囲選択の構文はによって到達可能なすべてのコミットを指定するトリプルドット構文であり、 どちらか ではなく、それらの両方によって、2つの参照のを。バック例を見にコミット履歴 範囲選択のための例の歴史。。あなたが何であるかを確認したい場合 master
や experiment
任意の一般的な言及はなく、次のコマンドを実行します。
$ git log master...experiment
F
E
D
C
繰り返しますが、これはあなたに、通常の与え log
出力をしかし、あなたは唯一の伝統的なコミット日時順に表示されて、これら4つのコミットのコミット情報を示しています。
で使用する一般的なスイッチ log
、この場合にはコマンドがある --left-right
。各コミット範囲の側面がどのあなたを示しており、これは、出力をより便利にすることができます:
$ git log --left-right master...experiment
< F
< E
> D
> C
これらのツールを使用すると、はるかに簡単にGitはコミットまたはあなたが点検したいコミットするものを知らせることができます。