Das Problem hier ist, dass Sie dies im allgemeinen Fall nicht tun können. Angenommen, Alice ändert eine bestimmte Datei, dann ändert Bob sie - einschließlich Teile, die Alice geändert hat - und schließlich ändert Alice sie erneut. Wie kombinierst du Alice's Diffs zu einem einzigen Diff? Wenn Sie sie als zwei Patches verwenden, wird die zweite einfach nicht angewendet, ohne dass Bobs Patch zuerst angewendet wird! Aber Sie können den Endzustand auch nicht einfach gegen das Original austeilen, da dies Bobs Änderungen beinhalten wird.
Wenn Sie ein Beispiel mit Git-Operationen bevorzugen, ist dies wie ein interaktives Rebase, und Löschen von zufälligen Commits. Sicher, manchmal klappt es, aber manchmal wird es einfach komplett fehlschlagen, weil eines dieser Commits von einem der Commits abhing.
Also, ich weiß, Sie sagten, Sie nicht einzelnen diffs begehen wollen, aber das ist alles, was Sie wirklich für hoffen können:
git log -p --author=Alice
Oder wenn Sie für ein einzelnes diff wirklich verzweifelt sind, wird diese erhalten es für Sie, aber nur in den Fällen, in denen Interaktion kein Patch sind wie ich oben erwähnt:
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
das ist wirklich nicht Operationen in der Arbeit Baum erfordern, weil es absolut keine Garantie, dass eine der Patches gilt, sobald ein Commit wurde übersprungen. Sie müssen nur versuchen und sehen.
Es ist nicht genau ein Duplikat, aber Sie können hier einige nützliche Informationen finden: [Extrahieren Sie relevante Änderungen für die Code-Überprüfung] (http://stackoverflow.com/questions/78339/extract-relevant-changes-for-code-review) –