Puisque j'avais déjà créé ces images, j'ai pensé qu'il pourrait être utile de les utiliser dans une autre réponse, bien que la description de la différence entre ..
(point-point) et ...
(point-point-point) soit essentiellement la même que dans la réponse de manojlds .
La commande git diff
ne vous montre généralement que la différence entre les états de l'arborescence entre exactement deux points dans le graphe de validation. Les notations ..
et ...
dans git diff
ont les significations suivantes:
En d'autres termes, git diff foo..bar
est exactement le même que git diff foo bar
; les deux vous montreront la différence entre les pointes des deux branches foo
et bar
. D'autre part, git diff foo...bar
vous montrera la différence entre la "base de fusion" des deux branches et la pointe de bar
. La "base de fusion" est généralement le dernier commit en commun entre ces deux branches, donc cette commande vous montrera les changements que votre travail bar
a introduits, tout en ignorant tout ce qui a été fait foo
entre-temps.
C'est tout ce que vous devez savoir sur les notations ..
et ...
dans git diff
. Toutefois...
... une source courante de confusion ici est cela ..
et ...
signifie des choses subtilement différentes lorsqu'elles sont utilisées dans une commande comme celle git log
qui attend un ensemble de validations comme un ou plusieurs arguments. (Ces commandes finissent toutes par être utilisées git rev-list
pour analyser une liste de commits à partir de leurs arguments.)
La signification de ..
et ...
pour git log
peut être représentée graphiquement comme ci-dessous:
Donc, git rev-list foo..bar
vous montre tout sur la branche bar
qui n'est pas également sur la branche foo
. D'autre part, git rev-list foo...bar
vous montre tous les commits qui sont dans l'un foo
ou l' autre bar
, mais pas les deux . Le troisième diagramme montre simplement que si vous listez les deux branches, vous obtenez les validations qui se trouvent dans l'une ou les deux.
Eh bien, je trouve que tout est un peu déroutant, de toute façon, et je pense que les diagrammes de graphe de validation aident :)
¹ Je dis seulement "typiquement" car lors de la résolution des conflits de fusion, par exemple, git diff
vous montrera une fusion à trois.
..
et...
dansgit diff
et leurs différentes significations dansgit log
.