michas' answerは、尋ねられた質問のための正しいものです。
古くなったref:a8e5e4e
の部分がa8e5e4e..295bf31 master -> origin/master
の場合はどうなりますか?おそらくあなたは実際に気にしないでしょう:彼が示唆したように、master...origin/master
を見ることはさらに興味深いことがあります。 しかし、この3ドットは実際には...
の構文は何ですか平均?
答えはgit rev-list
ドキュメントである:
別の特別な表記が マージするのに便利です<commit1>...<commit2>
です。結果のコミットのセットは、2つのオペランドの間に対称の差 です。 ...
私はおそらく十分な言い回しが混乱していると思っています(実際にはかなり異なる意味を使用しています)。しかし、実際にはそれほど複雑ではありません。このように描くことができ、いくつかのコミットを考える
:あなたが持っている
master origin/master
E G
| |
D F
\ /
C
|
B
|
A
何がコミットC
で発散です。 master
とorigin/master
の両方がC
を指しているときに作業を開始しました。明らかに、あなたはD
とE
をコミットし、 "彼ら"(彼らが誰であれ)はF
とG
をコミットしました。ちなみにC
はマージベースと呼ばれています。
何を意味するのですか:私を見つけてC
とし、左右の両方に "すべてそこから"私にすべてを渡してください。つまり、すべてのコミットはmaster
とorigin/master
の両方でコミットされますが、最初に会った時点でのコミットを除きます。
あなたがgitk master...origin/master
を実行する場合は、ちょうどそれが表示されます:すべてのコミットあなた作ら、と彼らは行われたすべてのコミット。しかし、git diff flags master...origin/master
を実行した場合、git diff
はこれをほとんどスローします。代わりに、マージベースC
、を見つけ、右側の名前と比較します。
master
ブランチを使用しているとします(HEAD
はとにかく「マスター」を意味します)。これをさらに短縮することができます。あなたとその枝が分岐するのでどのファイルを参照するには、彼らは単に実行し、修正:
$ git diff --stat ...origin/master # or --name-status, etc
名を残すにはHEAD
を意味し、これはmaster...origin/master
と同じであるHEAD...origin/master
と同じです。
$ git diff --stat '[email protected]{u}'
を(引用符を保護するために、次のとおりです。あなたが実行できるように
あなたのgitが十分に新しい場合
は、@{u}
は、「現在のブランチの上流分岐」(すなわち、master
から、origin/master
を見つける。)を指しシェルからの中カッコ;あなたの特定のシェルでは必要ないかもしれません)。 $ git log --graph --boundary ...origin/master
:これは、あなたがgitk
を持っていない場合は、してみてください
など、あなたがその上流、またはその上流などorigin/featureX
とfeatureX
としてorigin/develop
でdevelop
にしている場合でも動作します
(または上記のように'[email protected]{u}'
)。マージコミットを含めるには--boundary
が必要です。 --oneline --decorate
を追加することもできます。
実際gitk
が、それは(これは、マージ拠点と全く同じではありませんコミットが、近いミーティングポイントを含めるように--boundary
を使用して、ちょうどある脚注1のコマンドのように、マージがあまりにもコミットを紹介します十分な)。
これは、正確に1つのマージベースコミットがあることを前提としています。これらの場合、それは真実であるはずです。したがって、git diff
は、C
のツリーと、上流ブランチの先頭のG
のツリーを比較します。あなたはおそらく任意の長いドライブで彼らが訪問した中間点にかかわらず、 "彼らがどこにあった"と彼らがどこにあったかを比較します。 :-)たとえば、コミットF
がファイルthis/that
を追加してからコミットG
を再度削除すると、そのファイルは表示されません。
これは実際にあなたの現在のコミット( 'master')とそれらのもの(' origin/master')を比較します。これはまったく同じことではありません。 – torek