3

比較すると、Git diff は異なる変更を返すようです。

git diff origin/master ... origin/branch
git diff origin/master...origin/branch

2つの違いは何ですか?最初のコマンドの違いがわからない人のために、...はスペースでバッファリングされています。

4

2 に答える 2

5

通常、「ドット」表記は、範囲と完全なドキュメントを指定するためのものであり、git log --help「リビジョンの指定」セクションで入手でき、主にのようなリストに使用されますgit log

簡単に言えば、コミットから開始された2つのブランチがあります。

a - b - c (master)
\d - e (topic)

git log master..topicトピックからは到達可能であるがマスターからは到達可能ではないコミット、事実上「d」と「e」が表示されます

git log topic..masterマスターからは到達可能であるがトピックからは到達可能ではないコミット、事実上「b」と「c」が表示されます

これgit log master...topicで(3つのドットに注意)、マスターまたはトピックのいずれかから到達可能であるが、両方からは到達できない、事実上b、c、d、およびeのすべてのコミットが表示されます。

ただし、差分は範囲ではなく2つの履歴ポイントで機能しているため、たとえば表記法

git diff topic master

また

git diff topic..master

同じ結果を返す必要があります。つまり、指定されたブランチの先端間の差分3つのドット表記

git diff topic...master

トピックブランチがマスターから分岐されてからマスターで発生した変更を表示する必要があります

Janが指摘したように、スペースで囲まれた3つのドットの表記は、HEADがのブランチの1つと同じコミットを指している場合のブランチの先端の違い(ドットなしや2つのドットなど)としてgitによって理解されます。興味。HEADがトピックでもマスターでもない場合、3つの方法で差分が生じます。

お役に立てば幸いです。

于 2012-10-26T21:51:01.693 に答える
2

正しい構文はスペースを含まず、共通の祖先から右のブランチへの差分をとります。

...はリビジョンでもパスでもないため、スペースがあるとエラーになるはずですが、引数パーサーはそれを HEAD の同義語と見なします。おそらく事実の副作用、それ...branchは意味HEAD...branchbranch...意味branch...HEADです。git diff は任意の数の引数を取ることができ、2 つ以上の異なる引数を指定すると n-way diff を生成するという事実とともに。と同じリビジョンを指していない場合でも、指していないgit diff A ... B場合でも、3 方向の差分を確認したところ、実際に生成されます。ABHEAD

于 2012-10-26T22:04:31.347 に答える