git: исправлять только части старой версии файла - PullRequest
2 голосов
/ 28 июля 2011

Я отправил копию "main.c" в мой репозиторий. Затем я удалил 5 целых функций, чтобы посмотреть, что произойдет. Я хочу вернуть 2 из этих функций. Могу ли я сделать что-то вроде этого:

$ git make-patch main.c --interactive > patch_to_add_back_functions.patch
#interactively choose the functions I want.
$ patch main.c patch_to_add_back_funcitons.patch

Есть ли способ сделать это? Либо с помощью генерации патчей, либо с помощью любого другого способа мышления.

1 Ответ

2 голосов
/ 28 июля 2011

Если вы используете git checkout -p, вы можете выборочно отменить изменения в вашем рабочем дереве - это очень полезно только для описываемой вами ситуации, как я обнаружил. Несколько других заметок могут представлять интерес:

  • В качестве пояснения, когда я говорю «выборочно отменить изменения», строго говоря, это должно быть «выборочно изменять части файла обратно в их состояние в индексе». Однако, если вы не вносили никаких изменений со времени последнего коммита, состояние в индексе будет таким же, как и в последнем коммите.

  • Как и в случае с другими интерактивными опциями -p в git, вы можете нажать s , чтобы разделить патч, или, если вам нужно отменить изменения на еще более высоком уровне, нажать e позволит вам редактировать патч напрямую. (Впрочем, последнее может сначала запутать.)

...