2016-02-08 4 views
0

Я пытаюсь применить некоторые изменения, сделанные в конкретной фиксации, к HEAD моего репозитория Git. Филиал, на котором было совершено это совершение, составляет почти два года и никогда не включался в основную ветку хранилища по нескольким причинам.Git - Портирование изменений в HEAD из старой ветви

Однако есть несколько изменений, сделанных в этой фиксации, которые я хотел бы передать, в частности, дополнения к двум файлам: сигнатура метода, которая была добавлена ​​в интерфейс Java и его реализация в конкретном классе , Никакие строки не были изменены или не удалены из этих двух файлов.

Моя проблема заключается в том, что если я попытаюсь объединить или перемотать вишню в эту текущую ветку, я получаю всевозможные конфликты, так как фиксация настолько старая. Даже в этих двух файлах много кода было изменено тем временем, и теперь Git спрашивает меня, хочу ли я строк в этой фиксации или строк, которые были добавлены за последние два года. То, что мне действительно нравится, - это если Git может просто воспроизвести на HEAD те же дополнения, которые были сделаны в этом коммите, без замены какого-либо контента.

В данном конкретном случае, будучи только двумя файлами, я могу вручную переносить изменения, но мне было интересно, не хватает ли я конкретной команды/опции Git, которая могла бы автоматически фиксировать аналогичные ситуации.

Спасибо.

ответ

1

Вы можете проверить конкретные ломти из файла в коммит:

git checkout -p <commit> -- <path/to/file> 

Git будет затем пройти через все различия в этом файле между <commit> и HEAD и спросит, хотите ли вы организовать изменение или не. Это может быть весьма подавляющим, однако, в зависимости от размера файла и от того, насколько он изменился.

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