Question Comment comparer les fichiers de deux branches différentes?


J'ai un script qui fonctionne bien dans une branche et 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 moyens de le faire?

Pour être clair Je ne cherche pas d'outil de comparaison (j'utilise Beyond Compare). Je cherche une commande git diff qui me permettra de comparer la version master à ma version actuelle de la branche pour voir ce qui a changé. Je ne suis pas au milieu d'une fusion ou quoi que ce soit. Je veux juste dire quelque chose comme

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

1086
2017-11-04 18:04


origine


Réponses:


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 ex. master.. compare master à HEAD).

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

Ce formulaire est pour voir les changements sur la branche contenant et jusqu'à la seconde <commit>, en commençant par un ancêtre commun des deux <commit>. git diff A...B est équivalent à git diff $(git-merge-base A B) B.

En d'autres termes, cela donnera une différence de master car il a divergé de mybranch (mais sans nouveaux changements depuis lors mybranch).


Dans tous les cas, -- séparateur avant que le nom de fichier indique la fin des indicateurs de ligne de commande. Ceci est facultatif à moins que Git ne soit confus si l'argument fait référence à un commit ou à un fichier, mais inclure ce 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 un configuré.


1573
2017-11-04 18:13



Tu peux 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 git diff avec un programme visuel diff


308
2017-11-04 18:12



Une syntaxe plus moderne:

git diff ..master path/to/file

Le préfixe double point signifie "du répertoire de travail courant vers". Vous pouvez également dire:

  • master..c'est-à-dire l'inverse de ci-dessus. C'est la même chose que master.
  • mybranch..master, référençant explicitement un état autre que l'arbre de travail actuel.
  • v2.0.1..master, c'est-à-dire référençant une étiquette.
  • [refspec]..[refspec], fondamentalement tout identifiable comme un état de code à git.

125
2018-06-25 00:41



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

Cela vérifie les différences entre les fichiers. Changements dans branch1 serait en rouge. Changements dans branch2 serait en vert.

On suppose que branch1 est le passé et branch2 c'est l'avenir Vous pouvez inverser cela en inversant l'ordre des branches dans le diff: git diff branch2 branch1


8
2018-05-22 14:14



Il existe plusieurs façons de comparer les fichiers de deux branches différentes:

  • Option 1: Si vous voulez comparer le fichier de n branche spécifique à une autre branche 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 branche "mybranch" au   fichier dans la branche "mysecondbranch".

  • Option 2: Moyen 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 voulez comparer votre répertoire de travail actuel à une branche:

    git diff ..someBranch path/to/file
    

    Exemple:

    git diff ..master myfile.cs
    

    Dans cet exemple, vous comparez le fichier de votre branche actuelle à   le fichier dans la branche master.


7
2018-04-04 13:34



D'accord avec la réponse proposé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

2
2017-10-06 07:19



Afin de comparer deux fichiers dans le git bash, vous devez utiliser la commande:

git diff ..master - Filename.extension

Cette commande montrera la différence entre deux fichiers dans le bash lui-même.


0
2018-01-17 04:26



La meilleure façon de le faire est d'utiliser git diff de la manière suivante: git diff <source_branch> <target_branch> -- file_path

Il va vérifier la différence entre les fichiers dans ces branches. Jetez un oeil à cet article pour plus d'informations sur commandes git  et comment ils fonctionnent.


0
2018-05-07 12:18