我们有这个问题可能由merge
工作流引发,因此我们正在考虑使用rebase
工作流。
一个问题是rebase
远程存储库会导致历史记录的重写。但我认为这可以通过
- 在要变基的分支上标记一个
tag
(可以是时间戳的名称)branch_rebaseXXXXXXXX
XXXXXXXX
- 推
tag
- 申请
rebase
- 推
Git 可能会阻止您rebase
远程操作,即使您按照上述方法保存历史记录也是如此。除了git push --force
hack,我们可以做
branch_new
在上面创建一个新分支branch
- 如上标记一个标签
- 重新设置新分支
- 推送新分支和标签
- 删除旧的本地和远程
branch
- 重命名
branch_new
为branch
- 推送分支名称变更
当应用这种方法并且rebase
不merge
严格从一开始就使用时,虽然生成的提交历史不会是线性的,但由于不会有合并,它将有效地形成一个树状图,其中每个叶节点都是活动节点的尖端分支,或由标签标记。就个人而言,我将这些标签称为“墓碑”。
由于上述方法尚未在实践中使用,这种方法的优缺点是什么?特别是,如果有人检查了一个分支,在它上面工作,然后另一个人在那个分支上标记了一块墓碑,会发生什么?