从即将删除的分支中剪切 git 分支可以吗?

Fine to cut a git branch from soon to be deleted branch?

从另一个要合并删除的分支(A)中切出一个分支(B)是否有可预见的麻烦?即 A 将在 B 合并和删除之前合并到 master 并删除。我是否需要保留分支 A 直到 B 完成或删除是否安全?

master ----------------------------
             |
             |
             A---------------------
                    |
                    |
                    B--------------

不,这绝对没有问题。请记住,当您将 A 合并到 master 时,B 分支的提交不会去任何地方:

master ------*--*-------*------*------*------*
             |                       /^
             |                      / |____Merged A to master
             -------*-------*------/
                    |
                    |
                    B----------*---------*

即使您进行挤压合并,也不会造成任何伤害。当你最终将 B 合并到 master 时,只有 B 与 master 相比的变化是相关的,B 的起源点没有区别。

在 git 中,标签和分支是使您能够到达有向图中的项目的引用。唯一可用的根图路径是那些以分支或标签结尾的路径。没有分支或标签(或两者都不是的引用,如分离的 HEAD),您将一无所有。

从分支 B 的角度来看,甚至存在分支 A 的事实在很大程度上是无关紧要的:它只对跟踪合并很重要,在任何情况下,缺少分支 A 都不会丢失除此类信息之外的任何信息。由于分支 A 将被合并并关闭(删除),因此您想要的任何跟踪信息都已在合并点应用到 master。如果你合并B,它会在稍后发生,并且B已经携带了从它自己,通过分支A的片段,到图的根的路径(可能有很多!)。

如果分支 A 在没有合并的情况下被删除,分支 B 看起来就像一条直线到 master:它会在从 B 到 master 分支上最近的公共祖先提交的路径上包括来自分支 A 的提交.

重要的是你有分支 B 的句柄,而且你这样做了:分支本身就是句柄。您还可以有一个标签(标签和分支在所有方面都是相同的,除了它们在合并和解决冲突期间的解释之外)。或者一个分离的 HEAD。或者生活在边缘并将唯一的活动引用保留在回收站中(a.k.a。一个没有引用的头一直保留到它过期并被垃圾收集)。