Depuis que j'avais déjà créé ces images, j'ai pensé qu'il pourrait être intéressant de les utiliser dans une autre réponse, bien que la description de la différence entre ..
(dot-dot) et ...
(point-point-point) est essentiellement la même que dans manojlds de réponse.
La commande git diff
typically1 seulement vous montre la différence entre les états de l'arbre entre les deux points dans le commit graphique. L' ..
et ...
de notations en git diff
ont les significations suivantes:
En d'autres termes, git diff foo..bar
est exactement le même que git diff foo bar
, ce qui va vous montrer la différence entre les extrémités des deux branches foo
et bar
. D'autre part, git diff foo...bar
va vous montrer la différence entre la "fusion de la base de" l'une des deux branches et la pointe de l' bar
. La "fusion" de base est généralement le dernier commit en commun entre ces deux branches, de sorte que cette commande va vous montrer les changements que votre travail sur bar
a introduit, en ignorant tout ce qui a été fait sur foo
dans le temps de le dire.
C'est tout ce que vous devez savoir à propos de l' ..
et ...
de notations en git diff
. Cependant...
... une source fréquente de confusion ici, c'est qu' ..
et ...
moyenne subtilement différentes choses lorsqu'utilisé dans une commande telle que git log
qui s'attend à un ensemble de commits qu'un ou plusieurs arguments. (Ces commandes tous fin à l'aide de git rev-list
d'analyser une liste des commits de leurs arguments.)
Le sens de l' ..
et ...
pour git log
peuvent être représentées graphiquement 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 soit en foo
ou bar
, mais pas les deux. Le troisième diagramme montre simplement que si vous listez les deux branches, vous obtenez les commits qui sont dans un seul ou les deux d'entre eux.
Eh bien, je trouve que tout est un peu confus, de toute façon, et je pense que la validation graphique des diagrammes de l'aide :)
1 je dis "généralement" car lors de la résolution des conflits de fusion, par exemple, git diff
va vous montrer une trois voies de fusion.