Quelles sont les différences entre le double-point “..” et trois points “...” dans Git commit plages?
Certaines commandes Git prendre commettre des plages et une syntaxe valide est de séparer les deux commettre des noms avec deux points ..
, et une autre syntaxe utilise trois points ...
.
Quelles sont les différences entre les deux?
Vous devez vous connecter pour publier un commentaire.
Cela dépend si vous êtes en utilisant un
log
de commande ou undiff
de commande. Dans lelog
cas, c'est dans leman git-rev-parse
documentation:Ce qui signifie essentiellement que vous obtenez tous les commits qui sont dans l'une des deux branches, mais pas dans les deux.
Dans le
diff
cas, c'est dans leman git-diff
documentation:Qui est un peu floue. Fondamentalement, cela signifie qu'il ne montre que les différences dans cette branche par rapport à une autre branche: il regarde une dernière commune de s'engager avec le premier committish vous l'a donné, et puis diffs la deuxième committish pour que. C'est un moyen facile de voir quelles sont les modifications faites dans cette branche, par rapport à cette direction, sans prendre l'avis de modifications dans cette direction seulement.
La
..
est un peu plus simple: Dans lagit-diff
cas, c'est la même chose qu'ungit diff A B
et juste diffs Un contre B. Dans lelog
cas, il montre tous les commits qui sont dans B mais pas dans A...
et...
est exactement inversés pour les journaux et diff:log A..B
est en passe de fusion de la base de B, qui est ce quediff A...B
n'git diff
.A...B
==A..B + B..A
?À l'aide de Commettre des Plages de avec la commande Git Log
Lorsque vous êtes à l'aide de commettre des plages comme
..
et...
avecgit log
, la différence entre eux est que, pour les branches A et B,vous montrera tous les commits que B n'a qu'Un n'a pas, tandis que
vous montrera les deux les commits que a et B n'ont pas, et s'engage à ce que B a Une n'ont pas, ou en d'autres termes, il va filtrer tous les commits qui à la fois A et B de l'action, ce qui montre seulement les changements qu'ils ne pas les deux partagent.
Visualisation des Diagrammes de Venn & Commettre des Arbres
Ici est une représentation visuelle de
git log A..B
. Le s'engage à ce que la branche B contient qui n'existent pas dans Un est ce qui est retourné par la validation de la gamme, et est mis en évidence en rouge dans le diagramme de Venn, et entourés en bleu dans la validation de l'arbre:Voici les diagrammes de
git log A...B
. Notez que les commits qui sont partagé par les deux branches ne sont pas retournés par la commande:Faire le Triple Point de Commettre Gamme
...
Plus UtileVous pouvez faire le triple point de commettre gamme
...
plus utile dans un journal de commande à l'aide de la--left-right
option pour montrer qui engage appartiennent à la branche:Au-dessus de la sortie, vous allez voir les commits qui appartiennent à
master
sont préfixés avec<
, tandis que les commits qui appartiennent àorigin/master
sont préfixés avec>
.À l'aide de Commettre des Plages avec Git Diff
Un jour, je pourrais ajouter mes propres explication de la façon dont la validation des plages de travail avec
git diff
, mais pour l'instant, vous pourriez vouloir vérifier Quelles sont les différences entre le double-point ".." et trois points "..." dans Git diff commettre des plages?.Voir Aussi
git diff
, même si je ne suis pas sûr que la réponse sera claire pour la plupart des gens. Comme je l'ai commenté sur la question ci-dessus, cette question traitegit diff
spécifiquement.git diff A..B
montre tous s'engage à ce que ils n'ont pas les uns les autres; etgit diff A...B
montre B a selon partagé ancêtre.. de version git 2.18.0