Подтвердить что ты не робот

Как мне отменить конкретный кусок коммита в git?

Мне интересно, есть ли способ быстро отменить конкретный кусок коммита.

Я могу сгенерировать a diff между двумя коммитами или HEAD, чтобы увидеть разницу.

Как мне отменить только один из этих ханков (или, еще лучше, набор конкретных кусков)?

4b9b3361

Ответ 1

git checkout -p $REF -- path/to/file

Где $REF - это имя ссылки или идентификатор фиксации, который указывает фиксацию, из которой вы хотите передать состояние файла. Например, чтобы выборочно вернуть изменения, сделанные в последнем фиксации, используйте HEAD^.

Ответ 2

git difftool $REF -- /path/to/file

где $REF - это имя ссылки или идентификатор фиксации, определяющий фиксацию, из которой вы хотите получить состояние файла. Например, чтобы выборочно вернуть изменения, сделанные в последнем фиксации, используйте HEAD ^.

На этот вопрос уже ответил @cdhowie, но мне было несколько лучше использовать интерактивный diffftool, например meld, чтобы выборочно восстанавливать старые hunks/lines кода, особенно если есть недавно введенный, найти ошибку в коде.