web-dev-qa-db-fra.com

Indiquer quels fichiers ont changé entre deux révisions

Je souhaite fusionner deux branches qui ont été séparées pendant un moment et je voulais savoir quels fichiers avaient été modifiés.

Entré par ce lien: http://linux.yyz.us/git-howto.html qui était très utile.

Les outils pour comparer les branches que j'ai rencontrées sont:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

Je me demandais s'il y avait quelque chose comme "git status master..branch" pour ne voir que les fichiers différents entre les deux branches.

Sans créer de nouvel outil, je pense que c’est le plus proche que vous puissiez faire pour le faire maintenant (ce qui bien sûr affichera des répétitions si un fichier a été modifié plusieurs fois):

  • git diff master..branch | grep "^diff"

Je me demandais si quelque chose me manquait ...

1993
johannix

Pour comparer la branche actuelle à la branche master:

$ git diff --name-status master

Pour comparer deux branches quelconques:

$ git diff --name-status firstbranch..yourBranchName

Lire sur git diff dans le documentation officielle .

2434
JasonSmith

Essayer

$ git diff --stat --color master..branchName

Cela vous donnera plus d'informations sur chaque changement, tout en utilisant le même nombre de lignes.

Vous pouvez également retourner les branches pour obtenir une image encore plus claire de la différence si vous fusionniez dans l'autre sens:

$ git diff --stat --color branchName..master
386
Gerry

N'oubliez pas non plus que git a des branchements faciles et peu coûteux. Si je pense qu'une fusion pourrait être problématique, je crée une branche pour la fusion. Donc, si master contient les modifications que je souhaite fusionner et que ba est ma branche qui a besoin du code du maître, je peux procéder comme suit:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

Le résultat final est que je dois essayer la fusion sur une branche jetable avant de visser avec ma branche. Si je me mêle à moi-même, je peux simplement supprimer la branche ba-merge et recommencer.

152
Eric Anderson

Si quelqu'un essaie de générer un fichier diff à partir de deux branches:

git diff master..otherbranch > myDiffFile.diff
56
Paulino III

Il existe également une méthode basée sur une interface graphique.

Vous pouvez utiliser gitk.

  1. Courir:

    $ gitk --all
    
  2. Faites un clic droit sur une validation d'une branche et sélectionnez Marquez cette validation dans le menu contextuel.

  3. Faites un clic droit sur une validation d'une autre branche et sélectionnez Diff ceci -> marqué commit ou Diff marqué commit - - ceci .

Ensuite, il y aura une liste de fichiers modifiés dans le panneau en bas à droite et des détails de diff dans le panneau en bas à gauche.

35
Yantao Xie

Une autre option, en utilisant meld dans ce cas:

git difftool -d master otherbranch

Cela permet non seulement de voir les différences entre les fichiers, mais offre également un moyen facile de pointer et de cliquer dans un fichier spécifique.

33
rsilva4

Notez que git, il est facile d'essayer la fusion et d'éviter les problèmes si vous n'aimez pas le résultat. Cela pourrait être plus facile que de chercher des problèmes potentiels à l’avance.

29
David Plumpton

Et si vous recherchez des modifications uniquement entre certains fichiers, alors:

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1 est facultatif et votre branche actuelle (celle sur laquelle vous vous trouvez) sera considérée par défaut si branch1 n'est pas fourni. par exemple:

git diff master -- controller/index.js
16
Mannu

Lorsque vous travaillez en collaboration ou sur plusieurs fonctionnalités à la fois, il est courant que le logiciel en amont, voire votre maître, contienne un travail qui n'est pas inclus dans votre branche et qui apparaîtra de manière incorrecte dans les différences de base.

Si votre amont a peut-être déménagé, procédez comme suit:

git fetch
git diff Origin/master...

Le simple fait d'utiliser git diff master peut inclure, ou non, les modifications pertinentes.

15
Alex Brown

Si vous utilisez IntelliJ IDEA , vous pouvez également comparer n’importe quelle branche avec votre branche en activité. Voir http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 pour plus d'informations. Ceci est disponible dans le édition gratuite .

9
Wim Deblauwe

Il y a deux branches, disons

  • A (Branch on which you are working)
  • B (Another branch with which you want to compare)

Être dans la branche A, vous pouvez taper

git diff --color B

alors cela vous donnera une sortie de

enter image description here

Le point important à ce sujet est

  1. Le texte en vert est présent à l'intérieur de la branche A

  2. Le texte en rouge est présent dans la branche B

7
selftaught91

Il y a beaucoup de réponses ici, mais je voulais ajouter quelque chose que j'utilise couramment. SI vous êtes dans l’une des branches que vous souhaitez comparer, j’effectue généralement l’une des opérations suivantes. Pour répondre à cette question, nous dirons que nous sommes dans notre branche secondaire. En fonction de la vue dont vous avez besoin à ce moment-là, cela dépend de ce que vous choisissez, mais la plupart du temps, j'utilise la deuxième option des deux. La première option peut s'avérer utile si vous essayez de revenir à l'original - dans les deux cas, faites le travail!

Cela va comparer le maître à la branche dans laquelle nous sommes (qui est secondaire) et le code original sera les lignes ajoutées et le nouveau code sera considéré comme les lignes supprimées

git diff ..master

OR

Cela va également comparer le maître à la branche dans laquelle nous sommes (qui est secondaire) et le code original sera les anciennes lignes et le nouveau code sera les nouvelles lignes

git diff master..
7
Jase
git diff revision_n revision_m

si revision_n et revision_m sont des validations successives, le résultat est identique à git show revision_m

0
Jovo Skorupan

Si vous aimez l'interface graphique et utilisez Windows, voici un moyen simple.

  1. Télécharger WinMerge
  2. Découvrez les deux branches dans des dossiers différents
  3. Faites une comparaison dossier par dossier avec WinMerge. Vous pouvez également apporter facilement des modifications si l’une des branches est celle sur laquelle vous travaillez.
0
Marius Matioc

Vous pouvez également utiliser un visual diff.

Par exemple, si vous utilisez Sourcetree , vous pouvez simplement sélectionner deux commits dans la vue du journal .

(Personnellement, je préfère utiliser une interface graphique dans la plupart des cas, et je la poste pour ceux qui ne sont peut-être pas familiarisés avec les options de l'interface graphique.)

0
sonny

Pour ceux qui recherchent une solution graphique, Git Cola a un très joli "Viewer Diff Diff Branch ( Diff -> Branches .. ).

0
kerner1000