重新定位远程功能/错误/主题(私有)分支

ant*_*nth 6 git rebase git-rebase

有一条规则是不要重新推送被推送到远程存储库的提交.只要我理解了这一点的一般原因,我不清楚它是否也适用于这种情况:

让我们说我正在开发一些功能,哪些开发需要几天时间.所以,我创建分支MyFeature,checkout to it,并提交一些东西.由于工作需要几天,我不想将它保存在我的本地机器中,因此为了备份,我将此分支推送到远程.

完成工作后,我想以某种方式将它合并到主人.

我的问题:

  1. 假设没有其他人永远不会签出并拉出MyFeature分支,并将他的工作基于这个分支的提交(为什么有人想拉一些随机分支?),是否可以重新定义这样的远程分支?(使用-force开关)
  2. 如果由于某种原因仍然不可取(虽然我想了解这个原因)有什么替代方案?简单合并?但如果是这样,之后,我仍然希望从本地和远程存储库中删除MyFeature分支.那么它与(1)的不同之处是什么?我仍然通过完全删除它来改变历史.
  3. 以上提到的场景是罕见还是不典型?我的意思是,在搜索答案时,阅读有关git-rebase的教程和SO问题,总是强调这种重新定位远程分支的危险,但是从未考虑过其他类似的用例.恕我直言,当天更长时间地处理某些功能是很常见的,我认为没有谨慎的开发人员不应该只在他的计算机上进行更改......

Tim*_*sen 4

\n

假设没有其他人永远不会签出并拉取 MyFeature 分支,并将其工作基于此分支的提交,那么可以重新设置此类远程分支的基础吗?(使用 \xe2\x80\x93force 开关)

\n
\n\n

rebase强制推送远程功能分支不仅是可以的,而且是通过在保持线性的同时引入更改来master保持领先地位的唯一方法。master当您将rebase本地功能分支转移到另一个分支(例如master)时,您必须强制推送到远程,因为您已经有效地重写了历史记录。不存在造成任何伤害的风险,因为您将是该分支上唯一的工作人员。我认为 Git 创建的东西本质上都是邪恶的,每个 Git 功能都有它的时间和地点。这是可以接受用力推动的一个例子。

\n\n

事实上,远程个人功能分支是唯一可以在rebase已推送到远程的分支上使用的实例。如前所述,您不会给其他任何人带来问题,因为只有您检查过这个分支。

\n\n

话虽这么说,做一个rebase由许多用户共享的公共分支是危险的,因为当每个人进行下一次拉取时,这可能会导致每个人发生冲突(当然,进行变基的用户除外)。

\n