我正在使用中间 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
,但这可能只是一个演示文稿。
我是否遗漏了什么,或者以完全错误的方式解决这个问题?避免在远程服务器上执行 rebase 并不重要,但它使修复 rebase 中的任何合并冲突变得更加困难。