`Rebase and merge` 合并策略在 Bitbucket Server 上有什么作用?
What does the `Rebase and merge` merge strategy do on Bitbucket Server?
我正在探索 Bitbucket Server 上可能的合并策略,一个策略引起了我的注意:"Rebase and merge" rebase + merge --no-ff
据我所知,大多数关于合并策略的争论都围绕着变基 与 合并。这个合并策略好像是rebase and合并。这个对吗?与仅变基或仅合并相比,这会带来什么优势?
"rebase and merge" 策略通常就是人们所说的 "rebase"。它也只是表明接下来会发生什么。当您使用 --no-ff
时,它会进行合并提交。没有它,你会得到一个快进,所以两个引用都会指向同一个提交,它隐藏了你已经分支的事实。
合并 B
到 A
:
A *---* A *---*---*
\ merge -> \ /
B *---* B *---*
将 B
变基到 A
:
A *---* A *---*
\ rebase -> \
B *---* B *---*
变基并合并 (--no-ff
) B
到 A
:
A *---* A *---* A *---*-------*
\ rebase -> \ merge -> \ /
B *---* B *---* --no-ff B *---*
变基并合并 (--ff
) B
到 A
:
A *---* A *---* A,B *---*---*---*
\ rebase -> \ merge ->
B *---* B *---* --ff
Bitbucket Server 文档针对 Rebase、合并(rebase + merge --no-ff)和 Rebase、快进(rebase + merge --ff-only)合并策略说明了这一点。
"The PR branch is not modified by this operation"
根据此声明,在您的示例中,分支 B 中提交的 commitSHA 将保持不变。当在分支 A 中应用时,Bitbucket 将为相同的提交分配新的 commitSHA。
我正在探索 Bitbucket Server 上可能的合并策略,一个策略引起了我的注意:"Rebase and merge" rebase + merge --no-ff
据我所知,大多数关于合并策略的争论都围绕着变基 与 合并。这个合并策略好像是rebase and合并。这个对吗?与仅变基或仅合并相比,这会带来什么优势?
"rebase and merge" 策略通常就是人们所说的 "rebase"。它也只是表明接下来会发生什么。当您使用 --no-ff
时,它会进行合并提交。没有它,你会得到一个快进,所以两个引用都会指向同一个提交,它隐藏了你已经分支的事实。
合并 B
到 A
:
A *---* A *---*---*
\ merge -> \ /
B *---* B *---*
将 B
变基到 A
:
A *---* A *---*
\ rebase -> \
B *---* B *---*
变基并合并 (--no-ff
) B
到 A
:
A *---* A *---* A *---*-------*
\ rebase -> \ merge -> \ /
B *---* B *---* --no-ff B *---*
变基并合并 (--ff
) B
到 A
:
A *---* A *---* A,B *---*---*---*
\ rebase -> \ merge ->
B *---* B *---* --ff
Bitbucket Server 文档针对 Rebase、合并(rebase + merge --no-ff)和 Rebase、快进(rebase + merge --ff-only)合并策略说明了这一点。
"The PR branch is not modified by this operation"
根据此声明,在您的示例中,分支 B 中提交的 commitSHA 将保持不变。当在分支 A 中应用时,Bitbucket 将为相同的提交分配新的 commitSHA。