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 principale à la version actuelle de ma branche pour voir ce qui a changé. Je ne suis pas en train de fusionner ou quoi que ce soit. 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
Si vous utilisez la dernière syntaxe, si l'un des côtés est HEAD
, vous pouvez l'omettre (par exemple, master..
compare master
à HEAD
).
mybranch...master
(from git diff
docs ) peut aussi vous intéresser:
Ce formulaire permet d’afficher les modifications apportées à la branche contenant et jusqu’au second
<commit>
, en partant d’un ancêtre commun aux deux<commit>
.git diff A...B
est équivalent àgit diff $(git-merge-base A B) B
.
En d'autres termes, cela donnera un diff des changements dans master
puisqu'il 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 les indicateurs de fin de ligne de commande. Ceci est facultatif à moins que Git ne s'embrouille si l'argument fait référence à un commit ou à un fichier, mais l'inclure n'est pas une mauvaise habitude. Voir https://stackoverflow.com/a/13321491/54249 pour quelques exemples.
Les mêmes arguments peuvent être passés à git difftool
si vous en avez un configuré.
Vous pouvez faire ceci: git diff branch1:file branch2:file
Si vous avez configuré difftool, vous pouvez aussi: git difftool branch1:file branch2:file
Question associée: Comment puis-je afficher le résultat de git diff avec un programme de diff visuel
Syntaxe plus moderne:
git diff ..master path/to/file
Le préfixe à double point signifie "du répertoire de travail actuel à". Vous pouvez également dire:
master..
, c’est-à-dire l’inverse de ce qui précède. Ceci est identique à 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érencer une balise.[refspec]..[refspec]
, essentiellement tout ce qui est identifiable comme un état de code à git.Il existe de nombreuses façons de comparer des fichiers de deux branches différentes:
Option 1: Si vous souhaitez comparer le fichier d'une 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 de la branche «mybranch» au fichier 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 souhaitez 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.
Je fais simplement git diff branch1 branch2 path/to/file
Ceci vérifie les différences entre les fichiers. Les changements dans branch1
seraient en rouge. Les changements dans branch2
seraient en vert.
Il est supposé que branch1
est le passé et branch2
est le futur. Vous pouvez inverser cela en inversant l'ordre des branches dans le diff: git diff branch2 branch1
En accord avec la réponse suggérée par @dahlbyk. Si vous souhaitez que le fichier 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
Si vous voulez créer un diff avec la branche en cours, vous pouvez l'omettre et utiliser:
git diff BRANCH -- path/to/file
de cette façon, il diffère de la branche actuelle à la branche référencée (BRANCH).
Dans mon cas, j'utilise la commande ci-dessous:
git diff <branch name> -- <path + file name>
Cette commande peut vous aider à comparer le même fichier dans deux branches différentes.
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 vérifiera la différence entre les fichiers de ces branches. Jetez un coup d'oeil à cet article pour plus d'informations sur les commandes git et leur fonctionnement.
Utilisez les hachages de commit comme ceci:
git diff <hash1> <hash2> <filename>
où hash1 peut être n'importe quel commit de n'importe quelle branche, la même chose pour hash2 .
Afin de comparer deux fichiers dans git bash, vous devez utiliser la commande:
git diff <Branch name>..master -- Filename.extension
Cette commande montrera la différence entre les deux fichiers dans le bash lui-même.