Montrant quels fichiers ont changé entre deux révisions

je veux fusionner deux branches qui ont été séparés pendant un certain temps et je voulais savoir quels fichiers ont été modifiés.

est tombé sur ce lien: http://linux.yyz.us/git-howto.html ce 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

se demandait s'il y avait quelque chose comme" git status master..branch " pour ne voir que les fichiers qui sont différents entre les deux branches.

sans créer un nouvel outil, je pense que c'est ce qui se rapproche le plus de ce que vous pouvez faire maintenant (qui bien sûr affichera des répétitions si un fichier a été modifié plus d'une fois):

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

se demandait s'il y avait quelque chose que j'avais manqué...

1822
demandé sur jubobs 2009-05-05 04:47:59
la source

14 ответов

pour comparer la branche courante avec master

$ git diff --name-status master

pour comparer n'importe quelle paire de branches

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

Qui devrait faire ce dont vous avez besoin, si je vous comprends bien.

2233
répondu JasonSmith 2018-03-16 21:47:13
la source

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 deviez fusionner l'autre manière:

$ git diff --stat --color branchName..master
359
répondu Gerry 2012-02-02 03:34:01
la source

gardez également à l'esprit que git a la branche bon marché et facile. Si je pense qu'une fusion pourrait être problématique, j'ai créer une branche pour la fusion. Donc si master a les modifications dans lesquelles je veux fusionner et ba est ma branche qui a besoin du code de master je pourrais faire ce qui 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

résultat final est que je dois essayer la fusion sur une branche jeter-away avant de baiser avec ma branche. Si je m'embourbe, je peux supprimer le ba-merge branche et recommencer.

146
répondu Eric Anderson 2012-10-11 05:22:19
la source

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

git diff master..otherbranch > myDiffFile.diff
45
répondu Paulino III 2013-04-03 18:01:39
la source

notez que git rend facile d'essayer la fusion et de vous éloigner de tout problème si vous n'aimez pas le résultat. Cela pourrait être plus facile que de chercher des problèmes potentiels à l'avance.

30
répondu David Plumpton 2009-05-05 04:59:54
la source

il y a aussi une méthode basée sur L'interface graphique.

vous pouvez utiliser gitk .

  1. Run:

    $ gitk --all
    
  2. faites un clic droit sur un commit d'une branche et sélectionnez marquez ce commit dans le menu contextuel.

  3. "151980920 de" clic-Droit sur un commit d'une autre branche et sélectionnez Diff this -> marqué commettre ou Diff marqué commit -> ce .

ensuite, il y aura une liste des fichiers modifiés dans le panneau inférieur droit et des détails diff dans le panneau inférieur gauche.

29
répondu Shawn Xie 2014-09-11 02:15:11
la source

une option de plus, en utilisant la fusion dans ce cas:

git difftool -d master otherbranch

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

27
répondu rsilva4 2014-04-24 17:23:31
la source

lorsque vous travaillez en collaboration, ou sur plusieurs fonctionnalités à la fois, il est courant que l'amont ou même votre master contient des travaux qui ne sont pas inclus dans votre branche, et qui apparaîtront incorrectement dans les diffs de base.

si votre amont a pu se déplacer, vous devez le faire:

git fetch
git diff origin/master...

le simple fait d'utiliser git diff master peut inclure, ou ne pas inclure, les modifications pertinentes.

14
répondu Alex Brown 2016-03-17 06:12:13
la source

et si vous cherchez des changements seulement parmi certains fichiers, alors:

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

branch1 est optionnel et votre branche actuelle (la branche sur laquelle vous êtes) sera considérée par défaut si branch1 n'est pas fourni. e.g:

git diff master -- controller/index.js
12
répondu Mannu 2016-05-30 21:38:37
la source

si vous utilisez IntelliJ IDEA , vous pouvez également comparer n'importe quelle branche avec votre branche actuelle. Voir http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 pour plus d'information. C'est disponible dans la édition gratuite ainsi.

9
répondu Wim Deblauwe 2013-06-06 11:17:35
la source

il y a deux branches, disons

  • (Branche sur laquelle vous travaillez)
  • B (une autre branche avec laquelle vous voulez comparer)

étant 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 dans la branche a

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

4
répondu selftaught91 2016-10-04 14:56:48
la source

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 je fais généralement l'un des suivants. Pour cette réponse, nous dirons que nous sommes dans notre branche secondaire. Selon la vue dont vous avez besoin à ce moment dépendra de ce que vous choisissez, mais la plupart du temps j'utilise la deuxième option des deux. La première option peut être utile si vous essayez de revenir en arrière à l'original -- de toute façon, à la fois faire le travail!

ceci comparera master à 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

ou

ceci comparera aussi master à 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..
3
répondu Jase 2017-06-01 01:00:58
la source

si vous aimez GUI et utilisez Windows, voici un moyen facile.

  1. Télécharger WinMerge
  2. vérifiez les deux branches dans des dossiers différents
  3. faire une comparaison dossier par dossier en utilisant WinMerge. Vous pouvez aussi facilement faire des modifications si l'une des branches est celui que vous travaillez sur.
-1
répondu Marius Matioc 2018-06-20 02:21:20
la source

vous pouvez aussi facilement comparer des branches pour des fichiers modifiés en utilisant par exemple TortoiseGit . Il suffit de cliquer sur parcourir les références et choisir les branches que vous voulez comparer.

Par exemple, si vous comparez de branche avec maître , vous obtiendrez une liste de fichiers qui seront modifiées dans maître si vous décidez de fusionner votre-branche en maître .

Remmber que vous aurez un résultat différent si vous comparez maître avec votre-branche et votre-branche avec maître .

-3
répondu Piotr 2017-10-18 12:53:19
la source

Autres questions sur git branch git-diff git-branch