Применение тех же изменений переименования файлов к разветвленным ветвям GIT - PullRequest
4 голосов
/ 22 октября 2010

У меня есть проект, который имеет главную ветку и стабильную ветку - ветки давно разошлись. Теперь у меня есть пара коммитов в стабильной ветке, которые я также хочу иметь в основной ветке (исправление ошибки). Я не могу объединиться, так как ветви разошлись, и есть множество неотложенных изменений - я просто хочу 4 коммита.

Так что я попробовал вишневый кирку. Однако это не удается, поскольку имена модулей верхнего уровня изменились со схемы «проект-модуль» на «модуль». При выборе вишни GIT создает новые файлы в старых каталогах (как в старой ветке): переименование не обнаружено. Это возможно, потому что я получаю это предупреждение:

warning: too many files (created: 278 deleted: 5364), skipping inexact rename detection

Я пробовал git format-patch + git am, но при этом снова создаются файлы в старых каталогах.

Как я могу применить коммиты к основной ветке?

Спасибо, Адам

1 Ответ

3 голосов
/ 22 октября 2010

Я подозреваю, что вы можете заставить его работать (но это займет много времени), изменив значение merge.renameLimit:

merge.renameLimit

Количество файлов, учитываемых при выполнении обнаружения переименования во время слияния; если не указан, по умолчанию используется значение diff.renameLimit.

Я вполне уверен, что вишневый козырь тоже будет уважать это значение. Если это не так, вы можете найти общего предка двух веток, применить коммиты там, а затем объединить их в обе ветви, чтобы убедиться, что он использует механизм слияния. (Обратите внимание, что на самом деле это то, что я рекомендовал бы делать в первую очередь. Слияния гораздо предпочтительнее, чем выборки вишни, потому что они не создают дублирующих коммитов и сохраняют поток истории.)

...