J'ai trouvé le moyen de le faire sur le Git liste de diffusion:
git show <commit> -- <path> | git apply --reverse
Source: http://git.661346.n2.nabble.com/Revert-a-single-commit-in-a-single-file-td6064050.html#a6064406
Les Variations de
Cette commande échoue (à l'origine aucune modification) si le patch ne s'applique pas proprement, mais avec --3way
vous obtenez plutôt les conflits qui vous pouvez alors régler manuellement (dans ce cas, Casey, la réponse pourrait être plus pratique):
git show <commit> -- <path> | git apply --reverse --3way
Vous pouvez également utiliser cette partie, de revenir plusieurs s'engage, par ex.:
git log -S<string> --patch | git apply --reverse
pour rétablir les fichiers avec les changements de correspondance <string>
dans tous les commettre. C'est exactement ce dont j'avais besoin dans mon cas d'utilisation (un peu distincte s'engage introduit des changements similaires dans des fichiers différents, avec des changements d'autres fichiers sans rapport avec les moyens que je n'ai pas envie de revenir).
Si vous avez diff.noprefix=true
ensemble dans votre ~/.gitconfig
ensuite, vous devez ajouter -p0
de la git apply
de commande, par ex.
git show <commit> -- <path> | git apply -p0 --reverse