git bisect
, comme suggéré dans l'autre réponse, est certainement très utile pour rechercher quel commit a introduit un bug, et peut très bien trouver votre problème très rapidement. Cependant, il est possible que le commit de fusion soit le coupable, et dans tous les cas, une réponse directe à votre question pourrait être intéressante.
Tout d'abord, vous devez trouver le nom de l'objet (à savoir la somme SHA1) de la fusion engager qui vous intéresse, peut-être avec git log --graph --pretty=oneline
ou gitk
- disons que cette fusion engage son nom objet commence par d8fa
pour cet exemple.
Dans git, les commits sont définis en termes d'instantané complet de l'arbre plutôt que de modifications apportées à l'arbre, et ceci est vrai pour les fusions avec deux parents (ou plus) comme tout autre commit. Donc, peut-être la question la plus évidente à poser sur ce qui a été changé par un commit de fusion est "qu'est-ce qui a changé par rapport à chaque parent de cette fusion?" Vous pouvez vous référer au premier parent comme d8fa^1
et le second parent comme d8fa^2
afin que vous puissiez voir quels fichiers modifiés par rapport à chacun:
git diff --stat d8fa^1 d8fa
... et:
git diff --stat d8fa^2 d8fa
Ou vous pouvez voir ces deux en une seule fois avec:
git whatchanged -1 -m --stat d8fa
(Vous pouvez changer --stat
--p
pour voir tous les diffs au lieu du diffstat wi e git whatchanged
, ou laissez simplement de côté le --stat
avec git diff
. Si vous voulez juste voir le diff d'un seul fichier par rapport à un parent, vous pouvez faire git diff d8fa^1 d8fa -- README.txt
, par exemple.)
Dans la plupart des cas, cette sortie n'est probablement pas très intéressante - ce seront principalement des changements qui ont été introduits dans un parent mais pas l'autre. Cependant, il vaut également la peine de vérifier la sortie de git show d8fa
- cela affichera seulement un patch dans le cadre de sa sortie s'il y avait des changements introduits par la fusion qui ne semblaient pas être dans l'un ou l'autre parent, parfois connu comme evil merge.
Peut-être que les réponses à cette question pourraient vous aider? http://stackoverflow.com/questions/424071/how-do-i-list-all-the-files-for-a-commit-in-git – Makis