Czytając ponownie pytanie, wygląda na to, że chcesz cofnąć zmiany, które są w twoim drzewie roboczym, a nie zmiany, które zostały wcześniej wprowadzone, ale niektóre inne odpowiedzi sprawiają, że brzmi to tak, jakby moje czytanie mogło być błędne. Możesz wyjaśnić?
Jeśli zmiany znajdują się tylko w kopii roboczej, najłatwiejszym sposobem na to jest przygotowanie zmian, które chcesz zachować:
git add -i <file>
Następnie wyrzuć zmiany, których nie chcesz zachować, sprawdzając wersję indeksu:
git checkout -- <file>
Następnie wycofaj zmiany, jeśli nie chcesz ich jeszcze wystawiać:
git reset -- <file>
Ta reguła przywraca tylko wybrane zmiany w pliku (lub plikach, które określisz) i nie tworzy żadnego tymczasowego zatwierdzenia, które następnie wymaga cofnięcia.
Jeśli chcesz selektywnie zastosować tylko niektóre zmiany dokonane w poprzednich zatwierdzeniach, możesz najpierw zresetować plik do poprzedniego stanu zatwierdzonego:
git reset <commit_before_first_unwanted_change> -- <file>
Następnie możesz postępować zgodnie z poprzednim przepisem, git add -i <file>
aby wprowadzić zmiany, które chcesz zachować, git checkout -- <file>
wyrzucić niechciane zmiany i git reset -- <file>
„cofnąć” zmiany.