web-dev-qa-db-fra.com

Git: Comment différencier deux fichiers dans des branches différentes?

J'ai deux fichiers différents dans différentes branches. Comment puis-je les différencier en une commande?

Quelque chose comme

# git diff branch1/foo.txt branch2/foo-another.txt

Je pourrais extraire l'autre fichier, le comparer et le restaurer, mais c'est une solution assez sale.

158
Ondra Žižka
git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt

Vous pouvez également utiliser des chemins relatifs:

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt
203
twaggs

Sidenote: pas besoin de chemins complets, vous pouvez commencer par ./ pour les chemins relatifs. Cela peut être utile parfois.

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt
21
Campa

Il existe de nombreuses façons de comparer des fichiers de deux branches différentes. Par exemple:

  • Si le nom est identique ou différent:

     git diff branch1:file branch2:file
    

    Exemple:

     git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
    
  • Seulement si le nom est identique et que vous souhaitez comparer votre répertoire de travail actuel à une branche:

    git diff ..someBranch path/to/file
    

    Exemple:

    git diff ..branch2 full/path/to/foo.txt
    

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

Vous pouvez vérifier cette réponse:

Compare un fichier de deux branches différentes dans Git

1
Javier C.

Juste pour l'ajouter car je trouve la syntaxe très simple:

git diff <branch1> <branch2> <filepath>

Fonctionne également avec des références relatives comme par exemple:

# compare the previous committed state from HEAD with the state branch1 was 3 commits ago
git diff HEAD^ <branch1>~3 <filepath>
1
RomainValeri

Vous pouvez spécifier un début et une plage pour git diff à appliquer à. La plage est indiquée avec le .. notation.

branch1=somebranch
branch2=someotherbranch
git diff ${branch1}..${branch2} -- file_path
0
JCF