У меня есть три репозиции - имена изменены для ясности:
SharedStuff
, ProjectA
и ProjectB
Оба проекта используют git -subtree для сохранения локальной копии SharedStuff
. Они оба внесли локальные изменения, которые я пытаюсь объединить централизованно, тестировать, а затем снова сливаться с каждым.
Я запустил это в репозитории ProjectA:
git subtree split --prefix=SharedStuff -b SharedStuff_from_ProjectA --rejoin
... затем перетащил его в репозиторий SharedStuff
, разрешил несколько простых конфликтов, объединил его.
Теперь я запустил это в репозитории ProjectB:
git subtree split --prefix=platform/SharedStuff -b SharedStuff_from_Project_B --rejoin
... и снова нажал на SharedStuff
repo в новой ветке. Проблема возникает, когда я пытаюсь объединить эти изменения.
В текущем случае я переключаюсь на ветвь SharedStuff_from_Project_B
, затем git merge master
- но сразу получаю все измененные файлы, перечисленные как конфликты добавить/добавить. Когда я запускаю git mergetool
, каждый из них имеет такую ошибку:
Merging:
somefile.xyz
Normal merge conflict for 'somefile.xyz':
{local}: created file
{remote}: created file
fatal: invalid path './somefile.xyz_BASE_20704.cs'
(Конечно, если я попробую наоборот - объединить SharedStuff_from_Project_B
в master
- я получаю одни и те же конфликты, просто обратный. Еще добавьте/добавьте).
Я предполагаю, что что-то может быть неправильным в истории ProjectB, вызывая появление add/add. Я не уверен, как дальше диагностировать это, хотя - что я могу сделать?
Изменить: в ProjectB
было добавлено предыдущее поддерево "rejoin" commit, но изменения в нем не были объединены в SharedStuff
. Но при повторном запуске git subtree split
с --ignore-joins
возникает одна и та же проблема - много конфликтов слияния add/add
, несмотря на историю этой ветки разделяющего поддерева, возвращающейся обратно, когда SharedStuff
был сначала помещен в ProjectB
.: (
Изменить: также git merge-base
между разделенным поддеревом от ProjectB
и master
на SharedStuff
не дает никаких результатов. Я не уверен, как это произошло или как решить?