2012-03-22 4 views
7

У меня есть три ветви (назовем их мастером, тестированием и функцией). Все три являются разделяемыми, поэтому я не могу переустановить ни одного из них, не вызывая проблем для других. В настоящее время все три филиала расходятся (ни одна из них не является быстрой перемоткой вперед), поэтому в конечном итоге потребуется некоторое слияние, поскольку перезагрузка не является вариантом.Git merge single file without rebasing

На данный момент я хотел бы извлечь Makefile из тестирования в функцию, так как функция была отключена от мастера, а Makefile был добавлен в тестирование. Однако не хотят объединиться в любые другие изменения между двумя ветвями.

Мое понимание заключается в том, что если я просто добавлю Makefile к функции, это вызовет конфликты слияния, когда я снова объединю функцию в тестирование (а затем мастер), особенно если я сделаю какие-либо дополнительные дополнения к Makefile в моей ветви функции ,

Я мог бы сделать git-cherry-pick; однако в тестировании было много коммитов для Makefile, и я предполагаю, что есть лучший способ, чем пытаться использовать вишню - выбрать все эти коммиты в функции.

ответ

12

Вы можете просто сделать

git checkout branch_name <path(s)>

Это может загрузить определенный файл, но вы также можете использовать шаблоны и каталоги

Обратите внимание, что:

  • пути относительны
  • Путь делает git не переключением ветвей, поэтому вы можете просто зафиксировать после gettihg file
+0

Wow - Я использовал checkout как для переключения на фиксацию SHA, так и в файле, возвращаемом обратно в HEAD, но я не понимал, что вы могли бы объединить эти два способа. В ретроспективе это довольно очевидно, но спасибо! – chimeracoder