我正在开发一个功能分支,我做了git checkout -b feature/other-feature
,做了一些工作,提交了它,然后将它推送到github上的origin feature / other-feature。
当我从github上的other-feature分支创建一个pull请求时,我意识到它显示了来自原始功能分支的一组提交 - 应该合并的提交应该从原始分支开发。
我认为我做错了是在git checkout develop
之前省略git checkout -b feature/other-feature
,所以我认为我想要纠正这种情况的是将其他特征改为开发。
但鉴于我把我的错误推到了原点并且其他人都有这个回购的克隆,我是否需要改变或做其他事情?
答案 0 :(得分:3)
是的,您需要修改feature/other-feature
的副本。但是,在这种情况下,简单的git rebase develop
可能无效,因为您分支了另一个功能分支,而不是直接关闭develop
。您需要使用rebase --onto
:
git rebase --onto develop feature/earlier-feature feature/other-feature
此处,feature/earlier-feature
是您在死亡时检出的功能分支
git checkout -b feature/other-feature
。
此rebase将:
feature/other-feature
中 not 的feature/earlier-feature
提交。develop
。您最终应该使用已更改的分支feature/other-feature
,该分支现在基于develop
。
备注强>
rebase --onto
的含义在书#34; Pro Git"中得到了很好的解释。见第3.6章,Git Branching - Rebasing。如果其他人克隆了您的存储库
你写
但鉴于我已将我的错误推向原点并且其他人也有 这个回购的克隆,我需要变基或做别的吗?
您仍然可以如上所述进行变基。但是,您不能以旧名称强制推送已重新分支的分支。而是创建分支的副本:
git checkout -b feature/other-feature-2 feature/other-feature
这将创建一个新分支feature/other-feature-2
,它是feature/other-feature
的精确副本。然后,您可以重新绑定新分支,并以新名称推送它。
然后告诉所有人feature/other-feature
已被feature/other-feature-2
取代,并在GitHub上删除feature/other-feature
。必须告诉每个人你为变基所支付的价格: - )。