У меня есть две ветви A и B.
Я начал с позиции, где ветвь B примерно на 200 коммитов перед ветвью A.
В то же время, многие файлы в ветке Aбыли перемещены, например, файлы Java из src/org/**
были перемещены в module1/src/main/java/org/**
, а файлы не из Java в module1/src/main/resources/**
.
У меня есть список всех перемещенных папок и файлов.
Я хотел бы перебазировать Ветвь B поверх Ветви A. Как правило, я бы сделал что-то вроде:
git fetch upstream && git checkout B && git rebase upstream/A
Однако это не относится чисто, так как Ветвь B одновременно добавляет новые файлы и изменяетсуществующие файлы в src/org
, но некоторые из них были перемещены (с git mv
) в ветвь А.
Есть ли способ, которым я могу сказать git обо всех перемещенных путях, когда он выполняет ребаз,например, когда вы создаете новый файл в src/org
, вместо этого теперь создайте его в module1/src/main/java/org
?
Или лучше будет создать большой набор патчей из ветви B с использованием git format-patch
, затем выполнитенайти и заменить во всех файлах патчей, чтобы обновить пути, прежде чем применятьОтправьте их в новую ветвь А?
Или, может быть, есть другой путь полностью?