在我们的项目中,我们希望合并的功能分支在 中可见git log --graph,但仍然具有线性历史记录,以便在功能分支的持续时间内主分支上没有提交。这意味着,确保功能分支在合并到主分支之前重新基于主分支。
目前,我们已经使用别名merge = merge --no-ff并尝试记住git rebase合并之前所做的事情,但有时我们会忘记。
即如果合并之前的情况是这样的:
A--B--C--D
\
E--F
Run Code Online (Sandbox Code Playgroud)
我们想要强制执行这个结果 (0)
A--B--C--D------m--
\ /
E--F
Run Code Online (Sandbox Code Playgroud)
并阻止这种行为 (1)
A--B--C--D--m--
\ /
E----F
Run Code Online (Sandbox Code Playgroud)
或这个(2)
A--B--C--D--E--F--
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道如何使用 git 别名来实现这一点。
git merge --no-ff创建合并提交,但允许结果 (1)git merge --ff-only确保主分支上没有提交,但创建结果 (2)git merge --ff愉快地创建(1)或(2),但没有创建(0)git merge --ff-only --no-ff表现得像--no-ff我们都需要独立于其他人提交到主分支,因此基于限制对主分支的访问或代码审查的解决方案并没有真正的帮助。