Перечитывая вопрос, звучит так, как будто вы хотите отменить изменения, которые есть в вашем рабочем дереве, а не изменения, которые были зафиксированы ранее, но некоторые другие ответы заставляют его звучать так, будто мое чтение может быть неправильным. Вы можете уточнить?
Если изменения находятся только в вашей рабочей копии, то самый простой способ сделать это - внести изменения, которые вы хотите сохранить:
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>
, чтобы «удалить их».