Одна ветвь (refactoringBranch
) имела полную реструктуризацию каталога. Файлы перемещались хаотически, но содержимое сохранялось.
Я попытался объединиться:
git merge --no-ff -Xrename-threshold=15 -Xpatience -Xignore-space-change refactoringBranch
git статус показывает примерно половину переименования файлов. Но из 10000 файлов в проекте половина не была распознана как перемещенная.
Одним из примеров может быть:
# On branch master
# Changes to be committed:
# deleted: 404.php
# new file: public_html/404.php
...
# deleted: AnotherFile.php
# new file: public_html/AnotherFile.php
...
# renamed: contracts/css/view.css -> public_html/contracts/css/view.css
Предложения?
Предыстория
Рефакторинг был сделан за пределами git. Я сделал следующее:
- Создал
refactoringBranch
, начиная сmaster
. - Отбросил измененную структуру внутри
refactoringBranch
, что означало, что у меня были изменения в каком-то другом каталоге и только что скопировали их поверх моего репозитория git. - Добавлен и зафиксирован все, а затем попытался объединиться.
Это был мой рабочий процесс:
git checkout -b refactoringBranch
cp -R other/place/* ./
git add . -A
git commit -a -m "blabla"
git checkout master
git merge --no-ff -Xrename-threshold=15 -Xpatience -Xignore-space-change refactoringBranch
Вероятно, проблема возникает на шаге git add . -A
.
Потому что, если бы было обнаружено переименование, я бы предположил, что слияние будет безупречным.