2016-05-21 1 views
0

Nous avons engage 1-> 2-> 3-> 4-> 5Git: Afficher diff d'une collection de commits

Do voir la diff depuis (et y compris) engage 3 que nous pouvons faire git diff 3~1.

Ceci montrera les différences collectives à l'arbre source de diff 3 incluant 3/4/5. La question est - comment pouvons-nous voir les différences résultant de juste 3 et 5 mais pas 4? La validation 4 est une validation d'une partie différente de la source. 3 et 5 sont liés et nous voulons seulement voir le diff résultant de ces commits.

+1

'git checkout -b tmp 3; git cherry-pick 5' vous obtenez maintenant 1-> 2-> 3-> 5 '. Vous pouvez également le faire par 'git rebase --onto 3 4 5'. – ElpieKay

+0

Vous n'avez même pas besoin d'un nom de branche pour cela, faites-le. 'git caisse 3; git cherry-pick 5; git diff 3 ~; git checkout @ {- 1} ' – jthill

Répondre

0

Je ne pense pas que vous puissiez exclure des commits spécifiques dans une plage, mais je pense que la clé de votre question est le point que vous faites à propos de Commit 4 étant dans une partie différente de l'arbre source.

Si la structure de votre arborescence permet, vous pouvez limiter la diff à seulement ces répertoires dans l'arborescence source qui vous intéresse.

git diff <commit3> <commit1> -- <path> <path> <path> 

où les arguments <path> liste des 1 ou plusieurs répertoires de haut niveau contenant les fichiers qui vous intéressent.

Également, voir Exclude a directory from git diff pour certains mécanismes basés sur le shell pour exclure un seul répertoire.