Я використовую проміжне сховище Git для відображення віддаленого сховища SVN, з якого люди можуть клонуватися та працювати над. Проміжне сховище має його головну гілку щоночі перезавантажувати з висхідного 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
але це може бути просто презентацією.
Я чогось пропускаю, чи про це роблю зовсім неправильно? Не важливо уникати повторної роботи на віддаленому сервері, але це набагато важче виправляє будь-які конфлікти злиття з ребазою.