Comment faire pour que git diff ne montre que la différence entre 2 commits, c'est-à-dire exclure les autres commits entre les 2 ?
Réponses
Trop de publicités?Demander la différence /entre/ deux commits sans inclure les commits intermédiaires n'a pas beaucoup de sens. Les commits ne sont que des instantanés du contenu du référentiel ; demander la différence entre deux commits les inclut nécessairement. La question est donc de savoir ce que l'on cherche vraiment.
Comme William l'a suggéré, le cherry-picking peut vous donner le delta d'un commit unique basé sur un autre. C'est-à-dire :
$ git checkout 012345
$ git cherry-pick -n abcdef
$ git diff --cached
Elle prend le commit 'abcdef', le compare à son ancêtre immédiat et applique ensuite cette différence au-dessus de "012345". Cette nouvelle différence est alors affichée - le seul changement est que le contexte provient de '012345' plutôt que de l'ancêtre immédiat de 'abcdef'. Bien sûr, vous risquez d'obtenir des conflits, etc., et ce procédé n'est donc pas très utile dans la plupart des cas.
Si vous êtes juste intéressé par l'abcdef lui-même, vous pouvez le faire :
$ git log -u -1 abcdef
Cela compare abcdef à son ancêtre immédiat, seul, et c'est généralement ce que vous voulez.
Et bien sûr
$ git diff 012345..abcdef
vous donne toutes les différences entre ces deux commits.
Il serait utile d'avoir une meilleure idée de ce que vous essayez d'obtenir - comme je l'ai mentionné, demander la différence entre deux commits sans ce qui se trouve entre les deux n'a pas vraiment de sens.