494 votes

Quelles sont les différences entre le double-point «.. » et triple-dot «... » dans Git commettre des gammes ?

Certaines commandes Git commit gammes et une syntaxe valide est pour séparer les deux noms de commit deux points , et une autre syntaxe utilise trois points .

Quelles sont les différences entre les deux ?

799voto

Cupcake Points 22154

À l'aide de Commettre des Plages de avec la commande Git Log

Lorsque vous êtes à l'aide de commettre des plages comme .. et ... avec git log, la différence entre eux est que, pour les branches A et B,

git log A..B

vous montrera tous les commits que B n'a qu'Un n'a pas, alors que

git log A...B

va vous montrer à la fois 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 filtre tous les commits qui à la fois A et B de l'action, ce qui n'en montrer que les commits qui ils ne partagent.

Visualisation des Diagrammes de Venn Et de Commettre des Arbres

Voici une représentation visuelle de l' 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:

 "git log A..B" diagramTree 1

Ce sont les diagrammes git log A...B. Notez que les commits qui sont partagés par les deux branches ne sont pas retournés par la commande:

 "git log A...B" diagramTree 2

Faire le Triple Point de Commettre Éventail ... Plus Utile

Vous pouvez faire le triple point de commettre éventail ... plus utile dans un journal de commande en utilisant l' --left-right option show qui s'engage appartiennent à la branche:

$ git log --oneline --decorate --left-right --graph master...origin/master
< 1794bee (HEAD, master) Derp some more
> 6e6ce69 (origin/master, origin/HEAD) Add hello.txt

Au-dessus de la sortie, vous allez voir les commits qui appartiennent master avec le préfixe <, tandis que les commits qui appartiennent origin/master avec le préfixe >.

À 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 Git diff .. ? Quelle est la différence entre avoir .. et pas de points.

Voir Aussi

285voto

Pieter Points 1622

Cela dépend si vous êtes en utilisant un log commande ou un diff commande. Dans l' log des cas, c'est dans l' man git-rev-list documentation:

Cette opération de l'ensemble apparaît si souvent qu'il y est une abréviation pour. Lorsque vous avez deux commits r1 et r2 (nommé d'après la syntaxe expliqué dans La SPÉCIFICATION de RÉVISIONS ci-dessus), vous pouvez demandez pour les livraisons qui sont accessibles à partir de r2 à l'exclusion de ceux qui sont accessible à partir de r1 par "^r1 r2" et il peut être écrite comme "r1 r2..".

Une notation similaire "r1 r2..." est appelé symétrique différence de r1 et r2 et est définie comme "r1 r2 --pas $(git merge-base-tous les r1, r2)". Il est l'ensemble de commits qui sont accessible à partir d'un de r1 ou r2 mais pas des deux.

Ce qui signifie essentiellement que vous obtenez tous les commits qui sont dans l'une des deux branches, mais pas dans les deux.

Dans l' diff des cas, c'est dans l' man git-diff documentation:

  git diff [--options] <commit>...<commit> [--] [<path>...]

      This form is to view the changes on the branch containing and up to
      the second <commit>, starting at a common ancestor of both
      <commit>. "git diff A...B" is equivalent to "git diff
      $(git-merge-base A B) B". You can omit any one of <commit>, which
      has the same effect as using HEAD instead.

Ce 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. 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 branche.

L' .. est un peu plus simple: Dans l' git-diff des cas, c'est la même chose qu'un git diff A B et seulement de diff Un contre B. Dans l' log de cas, il montre tous les commits qui sont dans B mais pas dans A.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X