我不能自己下结论,我应该什么时候下结论rebase?我请有经验的同志分享他们的经验,并说明影响需要做什么的决定的标准rebase。并举例说明没有必要这样做的情况。
假设我创建了一个 branch1 来实现 feature1。此时master分支提交到commit0。与我同时,Vasya在branch2中同步实现feature2并合并到master中。Branch2 由 commit1、commit2、commit3 组成,这些提交在 master 中结束。我想使用 GIT 将我的分支带到状态,就好像我从 commit3 开始创建我的 branch1 一样。
在我的情况下可以接受rebase吗?
备份
如有疑问,请进行备份。任何方式都可以:
保存历史!
如果您在合并之前将功能分支变基到 master ,我强烈建议您使用
merge --no-ff,即 强制创建合并提交。没有这个,将获得快进和完全线性的历史。合并提交将显示项目工作的历史记录,特别是功能分支被合并的时刻和合并作者(跳过 master 中的代码的人)。从 2.6.0 版本开始,git 已经能够撤消(还原)合并提交。如果没有合并提交,您将不得不指定要撤消的确切提交集,这对于线性历史来说并不容易。
什么时候不
master、stable、production等release-1.0)中对任何内容进行变基。cherry-pick在另一个线程中制作小心
当您从多个提交中变基分支并且您关心干预提交时,请在变基后检查每个分支。rebase 会重写每个中间提交的内容,因此如果您的特定提交的代码之前已经编译或通过测试,那么在 rebase 之后它就不会通过。
如果你的分支有相当多的commit,并且有冲突,你将不得不多次解决它们(正是因为每次commit的内容都被覆盖了)。为了进行比较,对于正常的合并,您在实际的合并提交中解决它们一次。
什么时候可以
何时
master合并和/或打开合并请求之前进行变基。如果团队也有不使用其他人未在 master 中签出的提交的规则,则上述原因有效。如果满足“不允许时”部分中的任何条件,则不能变基。
合并前测试
Rebase 在测试中提供了一些优势。假设有分支
master和feature。自动和手动测试、代码自动检查、分析器等在两个分支上都显示出积极的结果。合并后这个结果会持续吗?一般来说,它是未知的。即使合并没有冲突,合并后代码也可能根本无法编译。因此,有理由
master在最终测试之前重新设置基准。然后 head 提交feature将与未来的合并提交相同。但是由于已经描述的原因,这种方法效率低下:如果需要解决冲突并全面测试合并的结果,但还没有合并到 master 中,最好使用反向合并技术:
master合并到feature. 因此,合并提交出现在feature.生成的合并提交可以在本地测试,可以推送到远程分支
origin/feature以更新合并请求、运行测试、CI、部署到测试环境等。通过所有检查后,进行“直接”合并 -featureinmaster。您不需要
master像那样合并到您的分支机构,在处理功能的过程中,这会导致莫斯科地铁地图形式的故事。如果你可以不合并master-feature一定要通过。在所描述的情况下,图形如下所示:
变基
最简单和最合乎逻辑的更新方式是变基
合并
原则上可以嵌入master,但是图会变得比较复杂
而合并到master之后,图会变得更加复杂:
新分行
您可以创建一个新分支并将您的提交移至那里,而不是变基
但这没什么意义,做一个变基更容易