El problema aquí es que no se puede hacer esto en el caso general. Supongamos que Alicia cambia un archivo en particular, luego Bob lo cambia, incluidas las partes que Alicia cambió, y finalmente Alicia lo cambia nuevamente. ¿Cómo combinas las dos diferencias de Alice en una única diferencia? Si los toma como dos parches, el segundo simplemente no se aplicará sin el parche de Bob que se aplica primero. Pero tampoco puedes simplemente diferir el estado final del original, porque eso incluirá los cambios de Bob.
Si prefiere un ejemplo con las operaciones de git, esto es como hacer una rebase interactiva y simplemente eliminar las confirmaciones aleatorias. Claro, a veces funcionará, pero a veces fallará por completo, porque uno de esos compromisos depende de uno de los que sacó.
lo tanto, sé que ha dicho que no quiere cometer individuo diferenciaciones, pero eso es todo lo que se puede esperar:
git log -p --author=Alice
O si usted está realmente desesperada por una sola diff, esto hará que por usted, pero sólo en los casos en los que no hay interacción parche, como he mencionado anteriormente:
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
Esto requiere realmente las operaciones en el árbol de trabajo, porque no hay absolutamente ninguna garantía de que cualquiera de los parches se aplicará una vez al commit ha sido salteado. Solo tienes que intentar y ver.
No es exactamente un duplicado, pero puede encontrar información útil aquí: [Extraiga los cambios relevantes para la revisión del código] (http://stackoverflow.com/questions/78339/extract-relevant-changes-for-code-review) –