在Git中重新生成远程分支

我使用一个中间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的伎俩,但导致合并提交,我想避免。我担心消息状态特性 – >特征而不是特征 – >起源/特征,但这可能只是一个演示的东西。

我错过了什么,或以完全错误的方式进行?避免在远程服务器上执行rebase并不重要,但它使得从rebase中解决任何合并冲突变得更加困难。

这要归结为该功能是由一个人使用还是其他人正在使用它。

你可以在rebase之后强制推送,如果它只是你:

git push origin feature -f

然而,如果其他人正在努力,你应该合并,而不是rebase离开主。

git merge master
git push origin feature

这将确保您与您合作的人有共同的历史记录。

在不同的层面上,你不应该做回合。你正在做的是污染你的特性分支的历史与其他提交不属于该特性,使后续的工作与该分支更难 – 重建或不重建。

这是我关于这个主题的文章叫branch per feature

希望这可以帮助。

http://stackoverflow.com/questions/6199889/rebasing-remote-branches-in-git

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在Git中重新生成远程分支