У меня есть большой веб-сайт, который я перемещаю в новую платформу и в мерзавце добавления процесса. Текущий сайт не имеет никакого управления версиями на нем.
Я запустил путем копирования сайта в новый репозиторий мерзавца. Я сделал новое ответвление и внес все изменения, которые были необходимы, чтобы заставить его работать с новой платформой. Один из тех шагов изменял расширение файла всех страниц.
Теперь во время, когда я работал над новыми изменениями сайта, были сделаны в файлы на старом сайте. Таким образом, я переключился на ведущее устройство и скопировал все те изменения в.
Проблема состоит в том, когда я объединяю ответвление с новой платформой назад на ведущее устройство существует конфликт на каждом файле, который был изменен на основном ответвлении.
Я не был бы к взволнованному об этом, но существует несколько сотен файлов с изменениями. Я попробовал git rebase
и git rebase --merge
без удачи.
Как я могу объединить эти 2 ответвления, не имея дело с каждым файлом?
Я нашел решение. Поскольку переименование файлов было выполнено с помощью сценария, я смог скопировать новые файлы .php и перезапустить сценарий перед слиянием. Поскольку файлы имели одно и то же имя, слияние прошло без конфликтов.
Вот шаги для всего процесса.
git init
Это работает, потому что для git изменения были внесены в файлы с новым именем.
Должен работать автоматически благодаря обнаружению переименования. Ниже приведен пример сеанса:
$ git init test Initialized empty Git repository in /tmp/jnareb/test/.git/ $ cp ~/git/README . # example file, large enough so that rename detection works $ git add . $ git commit -m 'Initial commit' [master (root-commit) b638320] Initial commit 1 files changed, 54 insertions(+), 0 deletions(-) create mode 100644 README $ git checkout -b new-feature Switched to a new branch 'new-feature' $ git mv README README.txt $ git commit -m 'Renamed README to README.txt' [new-feature ce7b731] Renamed README to README.txt 1 files changed, 0 insertions(+), 0 deletions(-) rename README => README.txt (100%) $ git checkout master Switched to branch 'master' $ sed -e 's/UNIX/Unix/g' README+ && mv -f README+ README $ git commit -a -m 'README changed' [master 57b1114] README changed 1 files changed, 1 insertions(+), 1 deletions(-) $ git merge new-feature Merge made by recursive. README => README.txt | 0 1 files changed, 0 insertions(+), 0 deletions(-) rename README => README.txt (100%)
Если бы вы выполняли "git merge master" в ветке 'new-feature' вместо, как выше, "git merge new-feature" на 'master', вы бы получили:
$ git merge master Merge made by recursive. README.txt | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
Не могли бы вы сказать, что вы делали по-другому?
Обратите внимание, что обычная команда «git rebase» (и «git pull --rebase») не принимает переименований: вам нужно запустить «git rebase -m» или интерактивную rebase.