Я использую промежуточный репозиторий Git для зеркалирования удаленного репозитория SVN, из которого люди могут клонировать и работать. В промежуточном репозитории его основная ветвь перебазируется каждую ночь из вышестоящего SVN, и мы работаем над функциональными ветвями. Например:
remote:
master
local:
master
feature
Я могу успешно перенести свою ветвь функций обратно на удаленное устройство и в итоге получить то, что ожидаю:
remote:
master
feature
local:
master
feature
Затем я переустановил ветку для отслеживания удаленного:
remote:
master
feature
local:
master
feature -> origin/feature
И все хорошо. Отсюда я хотел бы переместить ветвь функций в ветку master на удаленном компьютере, но я хотел бы сделать это с моей локальной машины. Я хотел бы иметь возможность сделать:
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Для поддержания ветки удаленной функции в актуальном состоянии с удаленным мастером. Однако этот метод заставляет Git жаловаться:
To <remote>
! [rejected] feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
git pull
делает трюк, но вызывает коммит слияния, которого я хотел бы избежать. Я обеспокоен тем, что в сообщении говорится, feature -> feature
а не, feature -> origin/feature
но это может быть просто презентация.
Я что-то упускаю или поступаю по этому поводу совершенно неправильно? Не критично избегать повторной обработки на удаленном сервере, но это значительно затрудняет устранение любых конфликтов слияния из этой базы.