git 变基后历史仍然不是线性的
After git rebase history is still not linear
这是我们的 rebase 工作流程:
- 拉动开发
- 结帐功能分支
- "git rebase develop"
- 解决冲突
- 变基后,(仍在功能中)"git push --force"
- 转到gitlab并在功能分支上创建合并请求以进行开发
- 合并分支
在此之后,历史仍然不是线性的,我们最终得到多个分支 "guitar-hero" 之类的。
知道我们做错了什么吗?
您看到的是合并提交。这些跟踪将功能分支合并到目标分支的操作。
Git实验室默认使用普通合并,它会产生合并提交。如果您不想合并提交,则需要执行 fast-forward 合并。 Git实验室支持:Fast-forward merge requests | GitLab
Retain a linear Git history and a way to accept merge requests without creating merge commits.
话虽如此,我鼓励您不要使用这种快进的工作流程,并感谢合并提交。
- 合并提交有助于描绘历史并显示一个功能完成和另一个功能开始的清晰界限。
- 如果您使用合并请求,那么您将进行一定数量的代码审查和批准。在这种情况下,合并提交记录在永久 Git 历史记录中批准所述分支的操作——这是一个平面 ff-only 工作流丢失的东西。
这是我们的 rebase 工作流程:
- 拉动开发
- 结帐功能分支
- "git rebase develop"
- 解决冲突
- 变基后,(仍在功能中)"git push --force"
- 转到gitlab并在功能分支上创建合并请求以进行开发
- 合并分支
在此之后,历史仍然不是线性的,我们最终得到多个分支 "guitar-hero" 之类的。
知道我们做错了什么吗?
您看到的是合并提交。这些跟踪将功能分支合并到目标分支的操作。
Git实验室默认使用普通合并,它会产生合并提交。如果您不想合并提交,则需要执行 fast-forward 合并。 Git实验室支持:Fast-forward merge requests | GitLab
Retain a linear Git history and a way to accept merge requests without creating merge commits.
话虽如此,我鼓励您不要使用这种快进的工作流程,并感谢合并提交。
- 合并提交有助于描绘历史并显示一个功能完成和另一个功能开始的清晰界限。
- 如果您使用合并请求,那么您将进行一定数量的代码审查和批准。在这种情况下,合并提交记录在永久 Git 历史记录中批准所述分支的操作——这是一个平面 ff-only 工作流丢失的东西。