У меня есть большой проект, который я обновлял до пограничных Rails. Я сделал копию всего каталога проекта и реорганизовал там в качестве меры предосторожности доверие к git (или, по крайней мере, как я мог бы использовать / использовать его неправильно). После завершения большей части работы я вернулся в исходную директорию проекта и на консоли (это из памяти и поэтому свободно основано на том, что на самом деле произошло):
git branch edge
git checkout edge
git rm vendor/plugins
git commit -m "wiped out old plugins"
затем я вручную скопировал последние версии плагинов, которые я обновил в своем скопированном проекте.
git add vendor/plugins
git commit -m "re-added in plugins, some unchanged, some later versions"
Насколько я понимаю, вышеупомянутое добавление является рекурсивным. Чтобы получить некоторое доверие к git, я переключался взад и вперед между веткой master и пограничной ветвью в разное время во время моей работы, просто чтобы убедиться, что он справлялся со свопингом.
git checkout master
git checkout edge
Что я заметил, так это то, что (после некоторых перестановок) в пограничной ветви некоторые из плагинов вернулись к основным версиям. Много раз я пытался зафиксировать последнюю версию проблемного плагина, но после замены он в конечном итоге возвращался.
Я подозреваю, что, возможно, возникла проблема с тем, как я добавлял файлы после их перемещения вручную. (Был ли необходим git add vendor / plugins / *?) Кто-нибудь имел проблемы с переключением между ветками, когда две ветви содержат одни и те же подкаталоги? Как бы вы справились с объединением изменений, найденных в копии приложения, найденной в одном каталоге, обратно в оригинал? Исходный репозиторий является чистым, в то время как копия довольно испорчена из-за попытки заставить некоторые плагины оставаться измененными в пограничной ветви.