Question

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

Entré dans 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 les suivants:

  • 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 s'il y avait quelque chose qui me manquait ...

Était-ce utile?

La solution

Pour comparer la branche actuelle à la branche master :

$ git diff --name-status master

Pour comparer deux branches quelconques:

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

Consultez git diff dans la documentation officielle . .

Autres conseils

Essayez

$ 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 inverser 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

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 maître contient les modifications que je souhaite fusionner et que ba est ma branche qui a besoin du code du maître, je pourrais 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 débrouille, je peux simplement supprimer la branche ba-merge et recommencer.

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

git diff master..otherbranch > myDiffFile.diff

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

Vous pouvez utiliser gitk .

  1. Exécuter:

    $ gitk --all
    
  2. Cliquez avec le bouton droit de la souris sur une validation d'une branche et sélectionnez Marquer cette validation dans le menu contextuel.

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

Il y aura ensuite une liste de fichiers modifiés dans le panneau inférieur droit et des détails relatifs dans le panneau inférieur gauche.

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 simple de pointer et de cliquer dans un fichier spécifique.

Notez que git permet d’essayer simplement la fusion et d’éviter 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.

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

Lorsque vous travaillez en collaboration ou sur plusieurs fonctionnalités à la fois, il est courant que le serveur 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 s’est déplacé, procédez comme suit:

git fetch
git diff origin/master...

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

Si vous utilisez IntelliJ IDEA , vous pouvez également comparer toute branche avec votre branche en activité. Voir http://www.jetbrains.com/ idea / webhelp / fusion-suppression-et-comparaison-branches.html # d288093e3827 pour plus d'informations. Celle-ci est également disponible dans la édition gratuite .

Il y a deux branches, disons

  • A (branche sur laquelle vous travaillez)
  • B (une autre branche avec laquelle vous souhaitez comparer)

Étant dans la branche A, vous pouvez taper

git diff --color B

alors cela vous donnera une sortie de

 entrez la description de l'image ici

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

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’utilise généralement l’une des méthodes 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 être pratique si vous essayez de revenir à une copie originale. Dans les deux cas, le travail est fait!

Ceci va comparer le maître à la branche dans laquelle nous sommes (ce 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 va également comparer le maître à la branche dans laquelle nous sommes (ce qui est secondaire) et le code original sera les anciennes lignes et le nouveau code sera les nouvelles lignes

git diff master..

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 à l’aide de WinMerge. Vous pouvez également apporter facilement des modifications si l’une des branches est celle sur laquelle vous travaillez.
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

Pour ceux qui recherchent une solution graphique, Git Cola est très pratique " Visualiseur Diff Diff. ( Diff - > Branches .. ).

Vous pouvez également utiliser une diff visuelle .

.

Par exemple, si vous utilisez Sourcetree , vous pouvez simplement sélectionnez deux validations 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.)

Vous pouvez également facilement comparer les branches des fichiers modifiés en utilisant, par exemple, TortoiseGit . Cliquez simplement sur Parcourir les références , puis sélectionnez les branches que vous souhaitez comparer.

Par exemple, si vous comparez votre branche avec master , vous obtiendrez une liste de résultats des fichiers qui seront modifiés dans master si vous décidez de fusionner votre branche dans maître .

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top