Quantcast
Channel: InfoQ - 促进软件开发领域知识与创新的传播
Viewing all articles
Browse latest Browse all 1638

Git 2.22:保留拓扑和交互式 Rebase

$
0
0

Git发布的最新版本Git 2.22中,最重要的新功能是,它支持”变基“(rebase)复杂的分支拓扑,例如,对于那些合并后不会扁平化分支拓扑的合并,也允许使用交互式的“变基”功能。

在基础分支(如master分支)发生变更后再合并其他功能分支时,”变基“提交是保持Git历史记录线性的好方法。在这种情况下,为了保证这两个分支不丢失任何变更,Git的标准做法是,将master合并到功能分支上,然后再尝试将功能分支合回master。这期间,我们不仅可以解决Git无法自己解决的任何合并冲突,而且Git还将创建一个master分支的提交拓扑,该拓扑在需要三向“合并”时,可以显式地展示合并操作。

与“合并”操作相反,在没有任何冲突的情况下,在有分叉的master分支进行“变基”提交时,Git只会假设你是在当前的master结点上开始处理导致该提交的分支。在这种情况下,master分支的历史记录将不会显示创建了新分支并又将其合回master分支的事实。这样整个历史记录看起来是线性的。

如果功能分支想要“变基”自己将会生成一个包括子分支和合并在内的复杂拓扑,在这种情况下,后一种方法就不太适用了。为了解决这个问题,现在可以将新的–rebase-merges选项用在“新基”上重放一组提交,并能保持“变基”分支的拓扑。此外,它还包括交互式“变基”功能,如重命名、压缩、重新排序等。从概念上讲,使用交互功能进行rebase-merges(几乎)等同于先执行preserve-merges,再执行rebase -i。事实上,在 Git 2.22中, preserve-merges选项已弃用,取而代之的是rebase-merges。具体的可以查看Stack Overflow.上关于rebase-merge背后算法的深入讨论

在Git2.22中,对rebase-merges的支持并不是唯一的变化,它还包括很多其他新特性和错误修复。在此,我们重点罗列如下几条:


Viewing all articles
Browse latest Browse all 1638

Trending Articles