Bitbucket Server 上的“Rebase and merge”合并策略有什么作用?

kka*_*sko 4 git-rebase fast-forward bitbucket-server

我正在探索 Bitbucket Server 上可能的合并策略,其中一个策略引起了我的注意:“变基并合并”rebase + merge --no-ff

我知道大多数关于合并策略的争论都围绕着 rebasemerge 展开。这种合并策略似乎是rebasemerge。它是否正确?与仅变基或仅合并相比,这会带来什么优势?

Ian*_*ald 14

“变基和合并”策略通常就是人们所说的“变基”。它也只是表明接下来会发生什么。当您使用 时--no-ff,它会进行合并提交。如果没有它,您将获得快进,因此两个引用都将指向相同的提交,并且它隐藏了您根本已经分支的事实。

并入:BA

A  *---*              A  *---*---*
    \       merge ->      \     /
B    *---*            B    *---*
Run Code Online (Sandbox Code Playgroud)

重新定位BA

A  *---*              A  *---*
    \      rebase ->          \
B    *---*            B        *---*
Run Code Online (Sandbox Code Playgroud)

变基并合并 ( --no-ff)BA

A  *---*              A  *---*                  A  *---*-------*
    \      rebase ->          \       merge ->          \     /
B    *---*            B        *---*   --no-ff  B        *---*
Run Code Online (Sandbox Code Playgroud)

变基并合并 ( --ff)BA

A  *---*              A  *---*                  A,B  *---*---*---*
    \      rebase ->          \       merge ->
B    *---*            B        *---*   --ff
Run Code Online (Sandbox Code Playgroud)

  • 那么使用 `--no-ff` 进行 rebase 可以让我拥有(某种程度上)更清晰的历史记录,而不会丢失分支提供的可追溯性?我一直将“rebase”策略理解为你的最后一个例子。这清楚了事情 (2认同)