git: слияние поддерева из одной ветки в другую

У меня проблемы с объединением поддерева ветки разработки обратно в ветвь интеграции.

У меня две ветки, одна использовалась для разработки, а другая - для интеграции. В ветке разработки была проведена обширная разработка, и я хочу объединить ее часть обратно. Конкретная часть, которую я хочу объединить, содержится в одном поддереве ветки разработки.

Моя структура каталогов выглядит следующим образом:

[Branch A]              [Branch B]
    |                       |
    +--Dir1                 +--Dir1
    +--Dir2                 +--Dir2
        |                   |   |
        +--DirA             |   +--DirA
            |               |       |
            +--File1        |       +--File1
            +--File2        |       +--File2
                            |       +--File3
                            |       +--File4
                            +--Dir3

Я хочу объединить Branch B / Dir2 / DirA с Branch A / Dir2 / DirA. Я хочу, чтобы File1 и File2 были объединены и File3 и File4 были созданы в Branch A. Я не хочу получать Dir3 или какие-либо изменения в Dir1.

Я пробовал шаги, описанные kernel.org для объединение поддеревьев , но они терпят неудачу, когда я делаю дерево чтения git с помощью:

error: Entry 'Dir1/DirA/File1' overlaps with 'Dir1/DirA/File1'.  Cannot bind.

Я пробовал использовать сценарий поддерева , который размещен на github, но у меня нет удачи с этим. Когда я это сделаю:

git checkout Branch_A
git subtree merge -P Dir2/DirA Branch_B

Я вижу доказательства того, что Dir3 был объединен, и объединение не удалось из-за конфликтов.

Я мог бы выбрать файлы для объединения, но это кажется излишне запутанным для того, что должно быть обычным и прямым проблема.

12
задан Brendan 21 June 2011 в 23:58
поделиться