将develop分支进行git rebase操作

4
抱歉,这又是一个关于"rebase"的问题,但我对此感到困惑。
我会把我的提交推送到远程(起源)的开发分支上。现在关于rebase总是有一件事被提到:“如果你已经推送了你的更改,永远不要rebase”。
这意味着我永远不能rebase我的develop分支,只能合并它吗?

在功能分支上工作很清楚,如果我还没有推送,我可以选择rebase而不是merge。我的问题只涉及开发分支。
4个回答

3
如果没有人从您的远程存储库克隆/更新他们自己的本地存储库,您可以进行变基(并强制进行下一次推送)。如果其他人从您的远程存储库中拉取了代码,并且您强制推送您的变基分支,则会发布新的历史记录,迫使他们执行更复杂的重置操作(他们必须将自己的本地分支重置为新的远程分支历史记录,然后重新应用自己的提交)。
对于公共远程存储库,强制推送可能会导致问题。请注意保留HTML标记。

git push --force-with-lease 解决了这个问题。 - undefined
@bbaassssiiee 很好的观点。为了增加可见性,我已经在答案中包含了你的评论,并附上了一些额外的参考资料。 - undefined

3

阅读《Pro Git》书中的“变基的风险”——它提供了带有图片的很好的解释。同时,git-rebase手册页也包含了“从上游变基恢复”的部分,让你能够站在可能受到你变基影响的每个人的角度思考。;-) 还包括了不错的ASCII艺术图。

而且,“永远不要对已经推送到公共仓库的内容进行变基”不应该被视为教条:有时,这是一种有效的方法,前提是明确告知你的公共仓库其他用户这种变基的情况。例如,请参阅当前Git维护者关于他的“pu”分支的说法(这份备忘录有些过时,新版的文本没有直接提到变基,因此我决定链接到这份旧版本)。


我已经阅读了《Pro Git》一书,当我在功能分支上工作时,它似乎在我的脑海中很清晰。但事实上,“develop”只是一个与所有其他分支具有相同规则的分支。因此,任何推送到远程仓库的分支都不应该进行变基。谢谢。 - Christof Aenderl

1

无论你有什么“类型”的分支(毕竟这只是一个概念,对于Git来说,分支就是分支),一旦你推送了任何更改,请不要进行rebase操作,否则提交的哈希值将会改变。


你的意思是:“这没关系……”。没错,“develop”只是另一个分支的名称,要记住这一点。 - Christof Aenderl

0

在已经推送的提交中,你不应该进行变基操作。然而,对于尚未推送的提交,进行变基(-i)是完全可以的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接