堆叠分支
堆栈是一串分支,每一层建在下面那层之上,比如 main ← api ← ui ← docs。每一层是一个独立的小拉取请求。
- 从分支菜单在它上面新建一层,已暂存的改动会提交到新层。
- 或者把一个分支拖到另一个分支上,堆在那里。
- 在非主干的分支上创建新分支时,MyTwig 会建议把它堆上去。
MyTwig 把每个分支的父分支记在仓库的 Git 配置里。它也能识别 git-town、Graphite 和 git-spice 创建的堆栈、彼此为目标的拉取请求,以及上游是另一个本地分支的分支。
左侧面板的堆栈部分显示每个堆栈,最上层在前,带有每层的拉取请求、审查和 CI,以及是否需要重新堆叠、是否已合并、重新堆叠是否会冲突。在提交图里,同一堆栈的标签颜色相同,并用一条线连起来。某一层的详情会显示类似 main ← #12 ← #13 ← #14 的地图。
- 重新堆叠:父层变化后,把每一层放回父层的末端。已合并的层会被移除。在某一层上提交或修改上次提交时,它上面的层会自动重新堆叠。
- 同步堆栈:抓取、更新主干、移除已在上游合并的层(包括压缩合并的)、重新堆叠、推送,并把每个拉取请求的目标指向下面一层,最后询问是否删除已合并的分支。
如果某一层会冲突,或者它的远程分支上有别人的提交,MyTwig 会停下来告诉你,而不是覆盖。撤销可以全部恢复。
提交堆栈…用一次原子推送推送所有层(每层都带租约),然后为每一层创建以下一层为目标的拉取请求(已有的则改目标)。每个拉取请求的描述里会在 <!-- mytwig-stack --> 标记之间放一份整个堆栈的列表并保持更新,描述的其余部分不受影响。
审查别人的堆栈
Section titled “审查别人的堆栈”在属于某个堆栈的拉取请求上,检出堆栈会抓取每一层,并检出为本地分支。
与已推送的比较逐个提交显示某一层和你上次推送时的差别:相同、已更改、已丢弃或新增。这正是审查者会看到的变化。