git rebase发展分支

时间:2012-10-11 07:08:40

标签: git

对不起,只是另一个" rebase"问题,但我对此感到困惑。
不时地将我的开发分支上的提交推送到远程(原点)。现在,对于rebase总是提到的一件事是:"如果你推动了你的改变,那就永远不会改变#34; 这意味着,我永远不能重新定义我的开发分支,只合并它?

在功能分支上工作是很清楚的,如果我没有推动它,我可以改变而不是合并。我的问题只指向发展部门。

4 个答案:

答案 0 :(得分:3)

如果没有人用您的远程仓库克隆/更新他/她自己的本地仓库,您可以改装(并强制进行下一次推送)。
如果其他人从您的远程仓库撤出,并且您强制推送您的重新分支,则会发布新的历史记录,迫使他们进行更复杂的重置操作(他们必须将自己的本地分支重置为新的远程分支历史记录,并且然后重新申请他们自己的承诺。) 对于公共远程仓库,forced push can lead to problems ;)

答案 1 :(得分:3)

阅读"The Perils of Rebase" in the "Pro Git" book - 它为图片提供了很好的解释。 git-rebase manual page还包含“从上游rebase恢复”部分,这使您可以看到可能受到rebase影响的每个人。 ;-)包括很好的ASCII艺术。

并且不,“永远不会改变被推向公共回购的东西”不应该被视为教条:有时,这是一种有效的方法,如果这种重新定义明确表达给公共存储库的其他用户。< / em>例如,请参阅what the current Git maintainer says about his "pu" branch(此备忘录有些过时,本文的较新版本未直接提及变基,因此我决定链接到此旧版本。)

答案 2 :(得分:1)

你拥有什么样的分支并不重要(毕竟它只是一个概念,对于git,分支是一个分支)。推送任何更改后,请不要执行rebase,否则提交的哈希值将更改。

答案 3 :(得分:0)

您不应该重新推送推送的提交。但是,对于未被推送的rebase(-i)提交完全没问题。