Come vedere i cambiamenti tra due commit senza commit in mezzo?

Come si fa a far sì che git diff mostri solo la differenza tra due commit, escludendo gli altri commit in mezzo?

puoi semplicemente passare i 2 commit a git diff come :

-> git diff 0da94be  59ff30c > my.patch
-> git apply my.patch
Commentari (14)

Chiedere la differenza /tra/ due commit senza includere i commit in mezzo ha poco senso. I commit sono solo istantanee del contenuto del repository; chiedere la differenza tra due include necessariamente questi. Quindi la domanda è: cosa state veramente cercando?

Come suggerito da William, il cherry-picking può darvi il delta di un singolo commit ribasato su un altro. Cioè:

$ git checkout 012345
$ git cherry-pick -n abcdef
$ git diff --cached

Questo prende il commit 'abcdef', lo confronta con il suo immediato antenato, poi applica quella differenza sopra '012345'. Questa nuova differenza viene poi mostrata - l'unico cambiamento è che il contesto proviene da '012345' piuttosto che 'abcdef'antenato immediato. Naturalmente, si possono ottenere conflitti e così via, quindi non è un processo molto utile nella maggior parte dei casi.

Se sei interessato solo ad abcdef stesso, puoi fare:

$ git log -u -1 abcdef

Questo confronta abcdef con il suo immediato antenato, da solo, e di solito è quello che volete.

E naturalmente

$ git diff 012345..abcdef

ti dà tutte le differenze tra questi due commit.

Aiuterebbe ad avere un'idea migliore di ciò che stai cercando di ottenere - come ho detto, chiedere la differenza tra due commit senza ciò che c'è in mezzo non ha senso.

Commentari (6)

Supponiamo che vogliate vedere la differenza tra i commit 012345 e abcdef. Il seguente dovrebbe fare ciò che vuoi:

pre> $ git checkout 012345 $ git cherry-pick -n abcdef $ git diff --cached pre>;

Commentari (1)