Você pode usar git checkout -p, o que permite escolher blocos individuais da diferença entre sua cópia de trabalho e índice para reverter. Da mesma forma, git add -ppermite escolher blocos para adicionar ao índice e git reset -pescolher blocos individuais a partir do diff entre o índice e HEAD para retornar ao índice.
$ git checkout -p file/to/partially/revert
# or ...
$ git checkout -p .
Se você deseja capturar instantaneamente seu repositório git para preservar essas alterações antes de revertê-las, eu gostaria de fazer:
$ git stash; git stash apply
Se você usa isso com freqüência, convém usar o alias:
[alias]
checkpoint = !git stash; git stash apply
A reversão de trechos ou linhas individuais pode ser ainda mais fácil se você usar um bom modo de editor ou plug-in, que pode fornecer suporte para selecionar linhas diretamente para reverter, pois -ppode ser um pouco desajeitado de usar às vezes. Eu uso o Magit , um modo Emacs que é muito útil para trabalhar com o Git. No Magit, você pode executar magit-status, encontrar as diferenças para as alterações que deseja reverter, selecionar as linhas que deseja reverter (ou simplesmente colocar o cursor nos pedaços que deseja reverter, se desejar reverter um pedaço de cada vez, em vez de uma linha de cada vez) e pressione kpara reverter essas linhas específicas. Eu recomendo o Magit se você usa o Emacs.