나는 Git 메일 링리스트에서 이것을하는 방법을 찾았다 :
git show <commit> -- <path> | git apply --reverse
출처 : http://git.661346.n2.nabble.com/Revert-a-single-commit-in-a-single-file-td6064050.html#a6064406
변형
패치가 제대로 적용되지 않으면 명령이 실패하지만 변경 사항이 발생 --3way
하면 충돌이 발생하여 수동으로 해결할 수 있습니다 (이 경우 Casey의 답변 이 더 실용적 일 수 있음).
git show <commit> -- <path> | git apply --reverse --3way
이것을 사용하여 여러 커밋을 부분적으로 되돌릴 수 있습니다.
git log -S<string> --patch | git apply --reverse
<string>
커밋에서 변경 사항이 일치하는 파일을 되돌 립니다. 이것은 내 유스 케이스에 필요한 것입니다 (몇 가지 별도 커밋은 다른 파일과 비슷한 변경 사항을 가져 왔으며 다른 파일은 되돌리고 싶지 않은 관련없는 방식으로 변경했습니다).
에 diff.noprefix=true
설정 ~/.gitconfig
한 -p0
경우 git apply
명령 에 추가 해야합니다 . 예 :
git show <commit> -- <path> | git apply -p0 --reverse