Я использую промежуточный репозиторий Git для зеркалирования удаленного репозитория SVN, из которого люди могут клонировать и работать. Промежуточный репозиторий имеет ветвь master, которая перестраивается ночной с восходящего SVN, и мы работаем над ветвями функций. Например:
remote:
master
local:
master
feature
Я могу успешно оттолкнуть свою ветку функций обратно на пульт и в итоге получить то, что ожидаю:
remote:
master
feature
local:
master
feature
Затем я повторно настрою ветку для отслеживания пульта:
remote:
master
feature
local:
master
feature -> origin/feature
И все хорошо. То, что я хотел бы сделать здесь, - это переустановить ветвь функции на главную ветку на удаленном компьютере, но я хотел бы сделать это с моей локальной машины. Я хотел бы иметь возможность:
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
, но это может быть просто презентационная вещь.
Я что-то упускаю, или об этом совершенно не так? Это не критично, чтобы не выполнять переадресацию на удаленном сервере, но он значительно затрудняет фиксацию любых конфликтов слияния с rebase.