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 cette dernière syntaxe, si l'un ou l'autre côté est, HEAD
il peut être omis (par exemple, se master..
compare master
à HEAD
).
Vous pouvez également être intéressé par mybranch...master
(à partir de git diff
documents ):
Ce formulaire permet d'afficher les modifications 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 un diff de changements master
depuis qu'il a divergé de mybranch
(mais sans nouveaux changements depuis lors mybranch
).
Dans tous les cas, le --
séparateur avant le nom du fichier indique la fin des indicateurs de ligne de commande. C'est facultatif à moins que Git ne devienne confus 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 transmis à git difftool
si vous en avez configuré un.
git diff branch1 branch2 myfile.cs
. (Le--
ne devrait plus être nécessaire, car il ne peut prendre que deux arguments de révision.)--
erreur. Commune et facile à faire.)git diff --name-status branch1..branch2
(probablement évident, mais pensais que je le mentionnerais au cas où quelqu'un d'autre aurait le même problème que moi).Tu peux le faire:
git diff branch1:path/to/file branch2:path/to/file
Si vous avez configuré difftool, vous pouvez également:
git difftool branch1:path/to/file branch2:path/to/file
Question connexe: Comment puis-je afficher la sortie git diff avec le programme visual diff
la source
branch1:./file
). Ceci est également utile si le fichier se trouve dans un emplacement séparé entre les branches (par exemplegit diff branch1:old/path/to/file branch2:new/path/to/file
).git diff branch1 branch2 path/to/file
.Syntaxe plus moderne:
git diff ..master path/to/file
Le préfixe à deux points signifie "du répertoire de travail actuel à". Vous pouvez également dire:
master..
, c'est-à-dire l'inverse de ce qui précède. C'est la même chose quemaster
.mybranch..master
, référençant explicitement un état autre que l'arborescence de travail actuelle.v2.0.1..master
, c'est-à-dire référencer une balise.[refspec]..[refspec]
, fondamentalement tout ce qui peut être identifié comme un état de code à git.la source
Il existe de nombreuses façons de comparer des fichiers de deux branches différentes:
Option 1: Si vous souhaitez comparer le fichier de n branche spécifique à une autre branche spécifique:
Exemple:
Option 2: manière simple:
Exemple:
Option 3: Si vous souhaitez comparer votre répertoire de travail actuel à une branche:
Exemple:
la source
Je fais simplement
git diff branch1 branch2 path/to/file
Cela vérifie les différences entre les fichiers. Les changements en
branch1
seraient en rouge. Les changements dansbranch2
seraient en vert.On suppose que
branch1
c'est le passé etbranch2
l'avenir. Vous pouvez inverser cela en inversant l'ordre des branches dans le diff:git diff branch2 branch1
la source
Si vous voulez faire un diff par rapport à la branche courante, vous pouvez l'oublier 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
).la source
En accord avec la réponse suggérée par @dahlbyk. Si vous souhaitez que le diff soit écrit dans un fichier diff pour des révisions de code, utilisez la commande suivante.
la source
Dans mon cas, j'utilise la commande ci-dessous:
Cette commande peut vous aider à comparer le même fichier dans deux branches différentes
la source
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 œil à cet article pour plus d'informations sur les commandes git et leur fonctionnement.
la source
Utilisez des hachages de validation comme ceci:
où hash1 peut être n'importe quel commit de n'importe quelle branche, de même pour hash2 .
la source
Il existe deux scénarios pour comparer des fichiers:
Scénario 1: comparer les fichiers dans les succursales distantes (les deux succursales devraient exister dans le référentiel distant)
Scénario 2: comparer les fichiers locaux (sur la copie de la zone de travail locale) aux fichiers du référentiel distant.
La logique est simple. Si vous fournissez deux noms de branche à diff, il comparera toujours les branches distantes et si vous ne fournissez qu'un seul nom de branche, il comparera toujours votre copie de travail locale avec le référentiel distant (celui que vous avez fourni). Vous pouvez utiliser range pour fournir des référentiels distants.
p.ex. commander une succursale
dans ce cas, si vous fournissez un nom de fichier, il comparera votre copie locale du nom de fichier avec la branche distante nommée " branch2 ".
dans ce cas, il comparera le nom de fichier des branches distantes nommées " branch1 " vs " branch2 "
dans ce cas également, il comparera le nom de fichier des branches distantes nommées " branch1 " vs " branch2 ". Donc, c'est la même chose que ci-dessus. Cependant, si vous venez de créer une branche à partir d'une autre branche, dites "maître" et que votre branche actuelle n'existe pas sur le référentiel distant, elle comparera à distance " maître " distant contre la " branche2 " distante .
J'espère que c'est utile.
la source
Afin de comparer deux fichiers dans le git bash, vous devez utiliser la commande:
Cette commande montrera la différence entre les deux fichiers dans le bash lui-même.
la source