我正在使用一个中间的Git存储库来镜像一个远程SVN存储库,人们可以从其中进行克隆和工作。中间存储库的主分支每晚从上游SVN重新定位,我们正在处理功能分支。例如:
remote:
master
local:
master
feature
我可以成功地将我的功能分支推送回遥控器,并最终得到我期望的结果:
remote:
master
feature
local:
master
feature
然后我重新设置分支来跟踪遥控器:
remote:
master
feature
local:
master
feature -> origin/feature
一切都很好。我想从这里做的是将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并不重要,但这会使修复来自rebase的任何合并冲突变得更加困难。
https://stackoverflow.com/questions/6199889
复制相似问题