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 ...
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 .
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
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.
Si quelqu'un essaie 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.
Courir:
$ gitk --all
Faites un clic droit sur une validation d'une branche et sélectionnez Marquez cette validation dans le menu contextuel.
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.
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.
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.
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 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.
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 .
Il y a deux branches, disons
Être dans la branche A, vous pouvez taper
git diff --color B
alors cela vous donnera une sortie de
Le point important à ce sujet est
Le texte en vert est présent à l'intérieur de la branche A
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’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..
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
Si vous aimez l'interface graphique et utilisez Windows, voici un moyen simple.
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.)
Pour ceux qui recherchent une solution graphique, Git Cola a un très joli "Viewer Diff Diff Branch ( Diff -> Branches .. ).