“永远”变基的陷阱是什么?

时间:2016-04-21 18:48:26

标签: git git-rebase

一些在职的人发誓git pull --rebase。事实上,即使有几个人在共享分支上工作,他们也不会git pull没有它。

我理解这是rewrites history。事实上,我已经看到它说一个should never rebase on a public/shared branch

我的问题:

  • 反驳“重写历史”的方式的具体例子是什么?
  • 如果违反“重新定价的黄金法则”,可能会出现哪些坏事?

与建议的欺骗可能存在差异:

我不是在谈论将 master 重新定位到功能分支中。我说的是几个开发人员在同一个功能分支上工作,执行git pull --rebase,进行一些更改,推送(如果推送被拒绝,则执行另一个pull --rebase等等。

2 个答案:

答案 0 :(得分:3)

我们在工作流程中使用它。

如果你只在短期分支上使用它,那就相对安全了。您将在同事推送的提交之上重播您的本地提交(重写 历史记录)。

如果您要重新整理整个协作部门,那么与您的同事仔细协调符合您的最佳利益。否则,某人很容易失去工作。使用pull -r,这非常困难。

答案 1 :(得分:1)

我们在工作流程中使用它。

只要您只修改未推送的更改,您只需重写自己的历史记录即可。

我认为:

  • 反思的好处 - 历史更清晰,因为它是线性的。您在分支机构工作的开发人员越多,就会越明显。
  • rebase的缺点 - 没有跟踪冲突解决方案。假设你有一切正常。然后是fetchmerge,并且存在合并冲突。您不正确地解决它们并推送您的更改。当CI系统检测到错误时,您可以将其追踪到不正确的冲突解决方案(或者可能是冲突解决后的不正确测试),而不是不正确的初始编码/测试。如果fetch然后rebase,则会丢失冲突解决方案,并将其嵌入到您的一个或多个提交中。

我确信人们有很多其他原因支持或反对,但对我来说,最重要的是这两个原因。

注意给任何即将大喊大叫的人,我完全错过了一些观点。我正在解决微观"开发人员日常工作和特色工作以及 - 用于rebase vs merges的工作流程。我没有从宏中解决这个问题"如何处理整个大型分支机构和级别的工作流程。我相信微观是OP所要求的。