Il problema qui è che non è possibile farlo nel caso generale. Supponi che Alice cambi un particolare file, quindi Bob lo cambi - incluse le parti modificate da Alice - e infine Alice lo cambia di nuovo. Come combini le due differenze di Alice in una singola diff? Se li prendi come due patch, il secondo semplicemente non si applica senza prima applicare la patch di Bob! Ma non puoi semplicemente diffare lo stato finale rispetto all'originale, perché questo includerà le modifiche di Bob.
Se si preferisce un esempio con le operazioni git, è come eseguire un rebase interattivo e semplicemente eliminare i commit casuali. Certo, a volte funziona, ma a volte fallisce completamente, perché uno di quei commit dipende da uno di quelli che hai eliminato.
Quindi, So che hai detto che non vuoi individuale commettere diff, ma è tutto quello che può davvero sperare:
git log -p --author=Alice
Oppure, se siete davvero disperata per una singola diff, questo otterrà per voi, ma solo nei casi in cui non v'è alcuna interazione di patch, come ho detto sopra:
git checkout -b temp first_commit
git log --pretty=%H --author=Alice first_commit..second_commit |
while read commit; do
git cherry-pick $commit || exit
done
# or if you have a new version of git, cherry-pick works with multiple arguments:
# git cherry-pick $(git log --pretty=%H --author=Alice first_commit..second_commit)
git diff first_commit temp
Questo ha veramente bisogno di operazioni nella struttura di lavoro, perché non c'è assolutamente alcuna garanzia che nessuna delle patch applicherà una volta il commit è stato saltato. Devi solo provare e vedere.
Non è esattamente un duplicato, ma potresti trovare alcune informazioni utili qui: [Estrai le modifiche rilevanti per la revisione del codice] (http://stackoverflow.com/questions/78339/extract-relevant-changes-for-code-review) –