Не существует ни одной волшебной последовательности команд, которая всегда выполнялась бы для разрешения этой ситуации.Если бы это было так, разработчики GIT просто выполнили бы это действие и не стали бы беспокоить пользователя.
Учтите, что эта ошибка также может произойти, если вы выбираете / переносите / переносите изменения, которые влияют на файл, который был повторно проанализированили переименован.
Например, скажем, что у вас есть ветвь с именем support/1.0
, которая выглядит следующим образом:
com.somewhere.package-a/
MyClass.java
MyOtherClass.java
Теперь предположим, что между версиями 1.0 и 1.5 это было реорганизовано.Итак, теперь release/1.5
выглядит следующим образом:
com.somewhere.package/
a/
MyClass.java
ANewClass.java
b/
MyOtherClass.java
Теперь предположим, что у вас есть ветвь функций из выпуска 1.5, которую вы пытаетесь перенести обратно в ветвь функций, основанную на support/1.0
,В этом коммите произошли изменения во всех трех файлах начиная с версии 1.5 (MyClass.java
, ANewClass.java
и MyOtherClass.java
).
Если вы попытаетесь использовать перебазирование или простой выбор вишни, чтобы помочь со спиной-port, может произойти одно из двух:
Если файлы были переименованы как часть трансплантируемых изменений, или среди непосредственных родительских коммитов трансплантируемых изменений, встроенная в GITпри обнаружении переименования может обнаружить, что эти файлы являются потомками файлов с оригинальными именами, и просто применить изменения к исходным файлам.
Если файлы переименованы достаточно далеко назад в историиверсии 1.5 (после выпуска версии 1.0) GIT сообщит вам, что файлы были удалены в release/1.0
, поскольку не знает, какие файлы в версии 1.0 соответствуют изменениям версии 1.5.
ANewClass.java
почти наверняка вызовет ошибку об удалении, если только она не была добавлена в одно из изменений, переносимых обратно.
Следовательно, потому что кодможет быть потеряно, если вы будете слепо следовать одному набору команд для разрешения этой ситуации, поэтому GIT запрашивает у вас ручное руководство.