2010-11-22 2 views
26

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

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

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

ответ

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

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

+3

Точнее, это позволит вам выборочно проверять версии контента с предыдущей фиксацией; изменения между вашим текущим фиксатором и деревом работ также будут отброшены. – Cascabel 2010-11-22 17:32:10

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

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

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

Смежные вопросы