Как мне отменить определенный кусок коммита в git? - PullRequest
29 голосов
/ 22 ноября 2010

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

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

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

Ответы [ 3 ]

39 голосов
/ 22 ноября 2010
git checkout -p $REF -- path/to/file

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

2 голосов
/ 29 августа 2013
git difftool $REF -- /path/to/file

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

На этот вопрос уже ответил @cdhowie, но я считаю, что несколько лучше использовать интерактивный difftool, такой как meld, для выборочного восстановлениястарые фрагменты кода, особенно если в коде есть недавно появившаяся труднодоступная ошибка.

1 голос
/ 22 июня 2012

Чтобы восстановить удаленный файл из предыдущего коммита, я использовал ответ здесь:

Найти и восстановить удаленный файл в хранилище Git

git checkout <deleting_commit>^ -- <file_path>
...