2015-06-08 4 views
0

Я использую git-svn. Я попытался выполнить git svn rebase. Все сломалось. Я нашел старое состояние репо в рефлоге и попытался продвигаться самым безопасным способом. Теперь мой репо выглядит следующим образом:Почему перезагрузка на предка вызывает конфликт слиянием

Обновление: Я сделал Объединить перед перебазироваться

... -- A (origin/branchA) -- B -- C -- D (BranchA,HEAD) 
           /
           /
... -- E (origin/trunk,Trunk) -- ... 

я сделал следующее

branch BranchA-Fix origin/branchA 

РЭПО выглядит следующим образом

... -- A (origin/branchA,BranchA-Fix) -- B -- C -- D (BranchA,HEAD) 
           _____________/ 
          /
    -- E (origin/trunk,Trunk) -- ... 

Затем я пытаюсь переместить свою работу в сторону, чтобы у меня не получилось c onflicts пытается сделать мерзавец SVN перебазироваться

git rebase BranchA-Fix 

Во-первых, перематывать голову, чтобы повторить свою работу поверх него ... Применение: Его скрипт небольшое обновление с помощью индекса информации, чтобы восстановить базу дерево ...

...

слияния ... Автоматическое слияние аппаратного/d3_script.ii кОНФЛИКТ (содержание): объединить конфликт аппаратного обеспечения/d3_script.ii Не удалось объединить в изменениях. Patch не удалось в 0001 и его сценарий небольшое обновление копия патча , что не удалось находится в:
/cygdrive/SOME_DIRECTORY/.git/rebase-apply/patch

Когда вы решили эту проблему, запустите «мерзавцем rebase - continue ". Если вы предпочитаете пропустить этот патч, вместо этого запустите «git rebase -skip». К проверьте исходную ветку и остановите перезагрузку, запустите «git rebase --abort».

Что случилось? Почему на земле будет перераспределяться на прямого предка, вызывая какой-либо конфликт слияния? Как я могу работать с обновлением svn без возникновения ошибок слияния?

ответ

0

Этот конфликт очень ожидаемый и представляет собой хорошо известную проблему смешанных слияний и переустановок. Особенно остро стоит git-svn.

В основном вы просите мерзавец переигрывать на вершине BranchA-Fix всех фиксаций, которые приводят к вам текущему ГОЛОВЕ (в BranchA), но не BranchA-Fix. Что фактически означает, что весь багажник формирует самое начало, среди остальных.

Вы можете увидеть это визуально git log HEAD --not BranchA-Fix или, еще более пояснительная к вашему делу - попытаться повторить перебазироваться в интерактивном режиме: git rebase --interactive BranchA-Fix

В целом для ГИТ-СВН с двунаправленной синхронизирует настоятельно рекомендуется избегать слияния и полностью переключиться на рабочий процесс rebase. Причина - переопределить природу git svn dcommit.

Решение вашей текущей ситуации зависит от деталей отношений филиалов, необходимости сохранения истории (неразрушенных коммитов) ветвей git и возможности перераспределения ветвей (последнее в вашем случае похоже на не проблема).

Смежные вопросы