2357 votes

Montrant les fichiers qui ont changé entre les branches git

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 venu à travers 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és sont:

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

Je me demandais si il existe quelque chose comme "git status maître..branche" pour afficher uniquement les fichiers qui sont différentes entre les deux branches.

Sans la création d'un nouvel outil, je pense que c'est le plus proche que vous pouvez obtenir pour le faire maintenant (ce qui bien sûr va montrer répète si un fichier a été modifié plus d'une fois):

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

Je me demandais si il ya quelque chose que j'ai manqué...

2911voto

JasonSmith Points 34470

Essayez

$ git diff --name-status master..branchName

Que devrait faire ce que vous avez besoin, si je vous comprends bien.

444voto

Gerry Points 3954

Essayez

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

Cela permettra de vous donner plus d'informations à propos de chaque changement, tout en continuant à utiliser le même nombre de lignes.

Vous pouvez également retourner les branches pour obtenir une image encore plus nette de la différence si vous étiez à fusionner l'autre sens:

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

172voto

Eric Anderson Points 680

Aussi garder à l'esprit que git est bon marché et facile de ramification. Si je pense qu'une fusion pourrait être problématique, j'ai créer une branche pour la fusion. Donc, si master a les changements que je veux fusionner et ba est ma branche qui nécessite le code à partir de maître, je peut 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

Le résultat final est que j'ai pu essayer la fusion sur un lancer de loin la branche avant de visser avec ma branche. Si je reçois mon auto enchevêtrées je peux juste supprimer l' ba-merge de la branche et de recommencer.

46voto

Yantao Xie Points 1279

Il y a aussi une interface graphique basée sur la méthode.

vous pouvez utiliser gitk.

  1. Exécuter

    $ gitk --tous

  2. Clic droit sur un commit de la branche et sélectionnez la Marque de ce commit dans le menu pop-up.

  3. Clic droit sur un commit d'une autre branche et sélectionnez la Diff this -> marqué commettre ou Diff marqué commit -> cette.

Ensuite, il y aura un changement de la liste des fichiers dans le coin inférieur droit du panneau et de la diff de détails en bas à gauche du panneau.

29voto

David Plumpton Points 1345

Notez que git le rend facile de simplement essayer de fusion et de loin de tous les problèmes si vous n'aimez pas le résultat. Il peut être plus facile que la recherche de problèmes potentiels à l'avance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X