Możesz użyć git checkout -p, który pozwala wybrać pojedyncze porcje z różnicy między kopią roboczą a indeksem do przywrócenia. Podobnie, git add -ppozwala wybrać porcje do dodania do indeksu i git reset -ppozwala wybrać pojedyncze porcje z różnicy między indeksem a HEAD, aby wycofać się z indeksu.
$ git checkout -p file/to/partially/revert
# or ...
$ git checkout -p .
Jeśli chcesz wcześniej wykonać migawkę repozytorium git, aby zachować te zmiany przed ich przywróceniem, lubię to zrobić:
$ git stash; git stash apply
Jeśli używasz tego często, możesz użyć aliasu:
[alias]
checkpoint = !git stash; git stash apply
Przywracanie pojedynczych fragmentów lub wierszy może być jeszcze łatwiejsze, jeśli użyjesz dobrego trybu edytora lub wtyczki, która może zapewniać obsługę bezpośredniego wybierania wierszy do przywrócenia, co -pmoże być czasami niezręczne w użyciu. Używam Magit , trybu Emacsa, który jest bardzo pomocny w pracy z Gitem. W Magit możesz uruchomić magit-status, znaleźć różnice dla zmian, które chcesz cofnąć, wybrać linie, które chcesz cofnąć (lub po prostu umieścić kursor na fragmentach, które chcesz przywrócić, jeśli chcesz cofnąć porcję na raz zamiast wiersz na raz) i naciśnij, kaby przywrócić te konkretne wiersze. Bardzo polecam Magit, jeśli używasz Emacsa.