Перечитавши запитання, це здається, що ви хочете повернути зміни, які є у вашому робочому дереві, а не зміни, які були раніше здійснені, але деякі інші відповіді звучать так, що моє читання може бути неправильним. Ви можете уточнити?
Якщо зміни є лише у вашій робочій копії, тоді найпростіший спосіб зробити це - поетапно змінити, які ви хочете зберегти:
git add -i <file>
Потім відкиньте зміни, які ви не хочете зберігати, перевіривши версію індексу:
git checkout -- <file>
Тоді зніміть зміни, якщо ви ще не хочете, щоб вони були поетапними:
git reset -- <file>
Цей рецепт повертає лише вибрані зміни до файлу (або вказаних вами файлів) і не створює тимчасових комісій, які потім потребують відновлення.
Якщо ви хочете вибірково застосувати лише деякі зміни, внесені в попередніх комісіях, ви можете спочатку відновити файл до попереднього скоєного стану:
git reset <commit_before_first_unwanted_change> -- <file>
Тоді ви можете дотримуватися попереднього рецепту, git add -i <file>
щоб поетапно змінити ті зміни, які ви хочете зберегти, git checkout -- <file>
викинути небажані зміни та git reset -- <file>
"невдало" зміни.