"always" 变基的陷阱是什么?
What are the pitfalls of "always" rebasing?
工作中的一些人发誓 git pull --rebase
。事实上,他们不会 git pull
没有它,即使几个人在共享分支上工作。
我的理解是 rewrites history. In fact, I have seen it said that one should never rebase on a public/shared branch。
我的问题:
- 变基方式的具体例子是什么"rewrites history"?
- 如果违反 "Golden Rule of Rebasing" 可能会发生哪些坏事的具体例子?
与建议的欺骗可能不同:
我不是在谈论将 master 变基为功能分支。我说的是几个开发人员在同一个功能分支上工作,做一个 git pull --rebase
,进行一些更改,推送(如果推送被拒绝,再做一个 pull --rebase
),等等
我们在工作流程中使用它。
如果你只在短命的分支上使用它是相对安全的。您正在重播 您的本地 提交(重写 那个 历史记录)在您同事推送的提交之上。
如果您要重新调整整个协作分支的基址,与您的同事仔细协调符合您的最大利益。否则很容易有人失业。 pull -r
,很难。
我们在工作流程中使用它。
只要您只 rebase 未推送的更改,您只是在重写自己的历史,这很好。
如我所见:
- rebase 的优势 - 历史更加清晰,因为它是线性的。您在一个分支上工作的开发人员越多,这种情况就越明显。
- 变基的缺点 - 没有冲突解决的跟踪。假设一切正常。然后你
fetch
和 merge
并且有合并冲突。您错误地解决了它们并推送了您的更改。当 CI 系统检测到错误时,您可以将其追溯到不正确的冲突解决(或者可能是冲突解决后不正确的测试)而不是不正确的初始 coding/testing。如果 fetch
然后 rebase
,冲突解决方案将丢失,嵌入到您的一个或多个提交中。
我敢肯定人们有很多支持或反对某一方的其他原因,但对我来说归结为这两个是最重要的。
请注意 任何要大喊大叫的人,我完全错过了一些要点。我正在解决变基与合并的微观 "developers doing their day to day commits and feature work" 级工作流程。我不是从宏 "how to handle whole large branches" 级别的工作流中解决这个问题。我相信 micro 是 OP 所询问的。
工作中的一些人发誓 git pull --rebase
。事实上,他们不会 git pull
没有它,即使几个人在共享分支上工作。
我的理解是 rewrites history. In fact, I have seen it said that one should never rebase on a public/shared branch。
我的问题:
- 变基方式的具体例子是什么"rewrites history"?
- 如果违反 "Golden Rule of Rebasing" 可能会发生哪些坏事的具体例子?
与建议的欺骗可能不同:
我不是在谈论将 master 变基为功能分支。我说的是几个开发人员在同一个功能分支上工作,做一个 git pull --rebase
,进行一些更改,推送(如果推送被拒绝,再做一个 pull --rebase
),等等
我们在工作流程中使用它。
如果你只在短命的分支上使用它是相对安全的。您正在重播 您的本地 提交(重写 那个 历史记录)在您同事推送的提交之上。
如果您要重新调整整个协作分支的基址,与您的同事仔细协调符合您的最大利益。否则很容易有人失业。 pull -r
,很难。
我们在工作流程中使用它。
只要您只 rebase 未推送的更改,您只是在重写自己的历史,这很好。
如我所见:
- rebase 的优势 - 历史更加清晰,因为它是线性的。您在一个分支上工作的开发人员越多,这种情况就越明显。
- 变基的缺点 - 没有冲突解决的跟踪。假设一切正常。然后你
fetch
和merge
并且有合并冲突。您错误地解决了它们并推送了您的更改。当 CI 系统检测到错误时,您可以将其追溯到不正确的冲突解决(或者可能是冲突解决后不正确的测试)而不是不正确的初始 coding/testing。如果fetch
然后rebase
,冲突解决方案将丢失,嵌入到您的一个或多个提交中。
我敢肯定人们有很多支持或反对某一方的其他原因,但对我来说归结为这两个是最重要的。
请注意 任何要大喊大叫的人,我完全错过了一些要点。我正在解决变基与合并的微观 "developers doing their day to day commits and feature work" 级工作流程。我不是从宏 "how to handle whole large branches" 级别的工作流中解决这个问题。我相信 micro 是 OP 所询问的。