Comment comparer des fichiers de deux twigs différentes?

J’ai un script qui fonctionne bien dans une twig et qui est cassé dans une autre. Je veux regarder les deux versions côte à côte et voir ce qui est différent. Y a-t-il des façons de le faire?

Pour être clair, je ne cherche pas un outil de comparaison (j’utilise Beyond Compare). Je recherche une commande git diff qui me permettra de comparer la version principale à ma version de twig actuelle pour voir ce qui a changé. Je ne suis pas au milieu d’une fusion ou de quelque chose. Je veux juste dire quelque chose comme

git diff mybranch/myfile.cs master/myfile.cs 

git diff peut vous montrer la différence entre deux commits:

 git diff mybranch master -- myfile.cs 

Ou équivalent:

 git diff mybranch..master -- myfile.cs 

En utilisant la dernière syntaxe, si l’un des côtés est HEAD il peut être omis (par exemple, master.. compare le master à HEAD ).

Vous pouvez également être intéressé par mybranch...master (de git diff docs ):

Ce formulaire permet d’afficher les modifications sur la twig contenant et jusqu’au deuxième , en commençant par un ancêtre commun des deux . git diff A...B est équivalent à git diff $(git-merge-base AB) B

Autrement dit, cela va donner une différence de changements de master car elle a divergé de mybranch (mais sans nouveaux changements depuis lors dans mybranch ).


Dans tous les cas, le séparateur avant le nom du fichier indique la fin des indicateurs de la ligne de commande. Ceci est facultatif à moins que Git devienne confus si l’argument fait référence à un commit ou à un fichier, mais l’inclure n’est pas une mauvaise habitude à prendre. Voir https://stackoverflow.com/a/13321491/54249 pour quelques exemples.


Les mêmes arguments peuvent être transmis à git difftool si vous en avez configuré un.

Vous pouvez le faire: git diff branch1:file branch2:file

Si vous avez configuré difftool, vous pouvez également: git difftool branch1:file branch2:file

Question connexe: Comment afficher la sortie de diff Git avec le programme de diff visuel

Syntaxe plus moderne:

git diff ..master path/to/file

Le préfixe à deux points signifie “du répertoire de travail actuel vers”. Vous pouvez également dire:

  • master.. , c’est-à-dire l’inverse de ci-dessus. C’est le même que master .
  • mybranch..master , mybranch..master explicitement un état autre que l’arbre de travail actuel.
  • v2.0.1..master , c.-à-d. référençant une balise.
  • [refspec]..[refspec] , essentiellement tout ce qui peut être identifié comme un état de code à git.

Il existe plusieurs façons de comparer des fichiers provenant de deux twigs différentes:

  • Option 1: Si vous souhaitez comparer le fichier de n twig spécifique à une autre twig spécifique:

     git diff branch1name branch2name path/to/file 

    Exemple:

     git diff mybranch/myfile.cs mysecondbranch/myfile.cs 

    Dans cet exemple, vous comparez le fichier dans la twig «mybranch» au fichier dans la twig «mysecondbranch».

  • Option 2: manière simple:

      git diff branch1:file branch2:file 

    Exemple:

      git diff mybranch:myfile.cs mysecondbranch:myfile.cs 

    Cet exemple est similaire à l’option 1.

  • Option 3: Si vous souhaitez comparer votre répertoire de travail actuel à une twig:

     git diff ..someBranch path/to/file 

    Exemple:

     git diff ..master myfile.cs 

    Dans cet exemple, vous comparez le fichier de votre twig actuelle au fichier de la twig principale.

Je fais simplement git diff branch1 branch2 path/to/file

Cela vérifie les différences entre les fichiers. Les changements dans branch1 seraient en rouge. Les modifications dans branch2 seraient en vert.

On suppose que branch1 est le passé et branch2 est le futur. Vous pouvez inverser cela en inversant l’ordre des twigs dans le diff: git diff branch2 branch1

En accord avec la réponse suggérée par @dahlbyk. Si vous voulez que le diff soit écrit dans un fichier diff pour les révisions de code, utilisez la commande suivante.

 git diff branch master -- filepath/filename.extension > filename.diff --cached 

La meilleure façon de le faire est d’utiliser git diff de la manière suivante: git diff -- file_path

Il vérifiera la différence entre les fichiers de ces twigs. Consultez cet article pour plus d’informations sur les commandes git et leur fonctionnement.

Pour comparer deux fichiers dans git bash, vous devez utiliser la commande:

 git diff ..master -- Filename.extension 

Cette commande affichera la différence entre les deux fichiers du bash lui-même.