Hoe zorg je ervoor dat git diff
alleen het verschil tussen twee commits laat zien, zonder de andere commits ertussen?
Vragen naar het verschil tussen twee commits zonder de tussenliggende commits mee te rekenen heeft weinig zin. Commits zijn slechts momentopnames van de inhoud van het archief; vragen naar het verschil tussen twee omvat ze noodzakelijkerwijs. Dus de vraag is dan, waar ben je echt naar op zoek?
Zoals William suggereerde, kan cherry-picking je de delta geven van een enkele commit die bovenop een andere commit geplaatst wordt. Dat is:
$ git checkout 012345
$ git cherry-pick -n abcdef
$ git diff --cached
Dit neemt commit 'abcdef', vergelijkt het met zijn directe voorouder, en past dan dat verschil toe bovenop '012345'. Dit nieuwe verschil wordt dan getoond - de enige verandering is dat de context van '012345' komt in plaats van 'abcdef's onmiddellijke voorouder. Natuurlijk kun je conflicten krijgen en etc, dus het's niet een erg nuttig proces in de meeste gevallen.
Als je'alleen geïnteresseerd bent in abcdef zelf, kun je doen:
$ git log -u -1 abcdef
Dit vergelijkt abcdef met zijn onmiddellijke voorouder, alleen, en is gewoonlijk wat je wilt.
En natuurlijk
$ git diff 012345..abcdef
geeft je alle verschillen tussen die twee commits.
Het zou helpen om een beter idee te krijgen van wat je'probeert te bereiken - zoals ik al zei, vragen om het verschil tussen twee commits zonder wat'er tussen zit heeft eigenlijk geen zin.