У меня возникли проблемы с объединением поддерева ветки разработки обратно в ветвь интеграции.
У меня две ветки, одна из них была использована для разработки, а одна - для интеграции. Обширная разработка была выполнена в ветке разработки, и я хочу объединить ее часть. Конкретная часть, которую я хочу объединить, содержится в одном поддереве ветки разработки.
Моя структура каталогов такова:
[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 read-tree с:
error: Entry 'Dir1/DirA/File1' overlaps with 'Dir1/DirA/File1'. Cannot bind.
Я пробовал использовать поддерево script, которое размещено на github, но мне не очень повезло с ним. Когда я это сделаю:
git checkout Branch_A
git subtree merge -P Dir2/DirA Branch_B
Я вижу доказательства того, что Dir3 был объединен, и слияние с ошибками не выполняется.
Я мог бы вишнеобразно выбрать файлы для слияния, но это кажется излишне запутанным для того, что должно быть общей и прямой проблемой.