git вишневый выбор в другой базовый каталог

У меня есть определенные коммиты в ветке 10.57, которые я хочу объединить с другой веткой 10.58.

Обычно я выбираю коммиты с 10.57 по 10.58.

Однако есть глюк. Некоторые файлы изменили свою структуру каталогов в версии 10.58.

Пример. Исходный каталог MAAS/ios-web-services в версии 10.57 перемещен в MAAS/apple/ios-web-services в версии 10.58.

Если я выберу вишню, как и раньше, мои изменения будут созданы заново как новые файлы/каталоги в MAAS/ios-web-services вместо того, чтобы объединяться с файлами в MAAS/apple/ios-web-services.

Есть ли способ попросить git учесть это изменение в структуре каталогов?

Файлы выбора Git из каталога A в каталог B предлагает редактировать патчи и применять их вручную. Нет ли другого более простого способа?


person Abhijith Madhav    schedule 21.11.2016    source источник
comment
Возможный дубликат Как объединить две ветки с разными иерархии каталогов в git?   -  person JDB still remembers Monica    schedule 27.12.2018


Ответы (2)


Если в файлах есть только незначительные изменения, вы можете попробовать использовать merge.renameLimit, как описано здесь для слияния ветвей: Как объединить две ветки с разными иерархиями каталогов в git ?

person nimatt    schedule 21.11.2016

  1. В 10.58 создайте структуру каталогов, аналогичную 10.57 mkdir -p MAAS/ios-web-services.
  2. Переместите файлы из старого местоположения в новое созданное местоположение mv MAAS/apple/ios-web-services/* MAAS/ios-web-services/
  3. Зафиксируйте эти изменения git add MAAS/ios-web-services git commit -a
  4. Теперь выберите изменение с 10,57 до 10,58.
  5. Обратный шаг 2, т.е. переместите файлы из нового места в старое.
  6. Обратный шаг 1, т.е. удалить структуру каталогов
  7. Зафиксируйте эти изменения.
  8. Теперь у вас есть 3 коммита, первый на шаге 3, второй на шаге 4, третий на шаге 7. Объедините все 3 коммита с помощью git rebase -i HEAD~3
person Mohammad Mahmood    schedule 05.01.2020