Git:我如何协调本地重新定位的功能分支与其远程等效功能?

时间:2014-06-19 17:49:39

标签: git

我已经master分支并完成feature-branch的工作。将feature-branch推到遥控器上。其他人的工作合并到master。我将更改提取到master,然后将我的本地版feature-branch从已更新的master重新绑定。

下次我尝试将feature-branch推送到遥控器时我无法解决,因为它因为反射而与远程版本不同步。单独工作时我的解决方案是强制推动,但是有更好的解决方案吗?我的一个同事,而不是强行推动,做了拉动然后推动,但结果看起来很奇怪(当做拉动请求掌握时,其他人的提交出现了。)

2 个答案:

答案 0 :(得分:3)

不要改变你推动的分支。

你应该永远不要改变历史(它通过推动而成为历史)。 Rebase改变了历史(其中包括修改)。

你可能会想:“我可以强迫它,对吧?” 没有: 每个拉feature-branch的人都需要强行下一次拉动。更糟糕的是:如果有基于原始feature-branch的提交,它们也需要更改。这将很快成为一场噩梦。

此时唯一的解决方案是还原您的rebase并将master合并到feature-branch

一般来说,我建议永远不要改变并避免快进合并。可能有一段时间你会很高兴有一个有意义的历史,即使它看起来很难看。 如果线性历史不代表实际历史,则没有任何东西可以获得。

答案 1 :(得分:1)

重新启动已经推送的东西只有在开发人员很少的情况下才能真正实用,一方面可以计算它们,你可以与它们取得联系并让它们全部修复它们的复制品。

如果我想发布一些正在进行的工作但仍然保持打开以后重新定义它的选项,我会做一个或两个:

  • 将它推到一些不是“幸福”的回购中,人们知道它只是为了刮擦
  • 通过某种命名惯例,明确地将其标记为“使用此风险,以后可以重新定位”。