我正在使用中间的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
但这可能只是演示性的事情。
我是否缺少某些东西,或者完全以错误的方式进行处理?避免在远程服务器上进行重新基准并不是至关重要的,但是这使得修复来自重新基准的任何合并冲突变得更加困难。