我刚刚注意到在 Azure DevOps 中有一个名为semi-linear merge. 我想知道它有什么作用?它是否介于合并策略和变基策略之间(名称为半线性)?如果是这样,有什么优点/缺点?
编辑:从Microsoft Devblog我相信这个选项包括 2 点:
但这不是合并策略吗?
ric*_*sch 19
半线性合并
这个策略是最奇特的——它是变基和合并的混合。首先,拉取请求中的提交重新基于主分支的顶部。然后将那些重新定位的拉取请求合并到主分支中。它模拟git rebase master在 pull request 分支上运行,然后git merge pr --no-ff在 master 分支上运行。有些人认为这是两全其美的:保留个人提交,以便您可以看到工作是如何演变的,但不仅仅是重新定位,而是显示“合并气泡”,以便您可以立即看到工作每个单独的拉取请求。
TTT*_*TTT 13
半线性合并只是添加了一个 rebase,以便在完成合并之前让您的分支保持最新状态。如果您正在 PR'ing my-branchinto target-branch,它与以下命令相同:
git fetch
git checkout my-branch
git rebase origin/target-branch
git branch -D target-branch # just in case you have an old version of it locally
git checkout target-branch
git merge --no-ff my-branch
Run Code Online (Sandbox Code Playgroud)
一些优点和缺点如下:
优点:
缺点:
git branch -D my-branch(而不是小写 -d),因为提交 ID 可能已更改。除非您通常不立即删除本地分支,否则这几乎不会带来不便;如果你等待,你需要确认你真的可以删除它。旁注:其他工具也提供此功能:
附加说明:我无法在任何地方找到此文档,但我已经测试并确认,在 Azure DevOps 中完成 PR 时,如果您选择“Rebase and fast-forward”或“Semi-linear merge”,您的 PR 来源在 PR 完成之前重写分支。通常,您会在合并后勾选删除源分支的框,并且不会关心这一点,但是如果您选择不选中该设置,那么重要的是要意识到您的远程分支将显示为“(强制更新)”在如果需要变基,则您的下一个本地获取。根据您的用例,这可能是 Pro 或 Con;大多数情况下,我倾向于更喜欢这个。
至于其他工具,这一战略GitLab力量你更新一个按钮点击您的分支,专门到位桶也没有修改PR分支在其相当于“再次基于,合并”的策略。
| 归档时间: |
|
| 查看次数: |
3618 次 |
| 最近记录: |