我一直在关注Scott Chacon的Pro Git Book,我已经到了第3章的末尾,我们刚刚完成了三向合并。请参见下图(我自己绘制的图表不是本书的屏幕抓图):
将' master '与' issue53 '合并后,导致合并提交 c6 ,作者说我们可以删除分支'的 issue53 '。
git branch -d issue53
引擎盖下的那个分支究竟发生了什么,结果图会是什么样子?我问这个是因为作者没有解决这个问题。分支仍然在那里,但只是没有指出?还是有一些我不知道的魔法?
答案 0 :(得分:2)
引擎盖下的分支实际发生了什么
这取决于 branch 这个词的含义。见What exactly do we mean by "branch"?
结果图会是什么样的?
用ASCII而不是花哨的图形绘制它,我得到:
C0<-C1<-C2<-C4<---C6 <-- master (HEAD)
\ /
C3<-C5
也就是说,提交根本不会发生没有。然而,名称 issue53
,曾经指向提交C5
,不再存在(根本不存在)。
由于图中的每个提交仍然可以从名称master
开始并向后工作,因此每个提交都会受到Git垃圾收集过程的保护。
答案 1 :(得分:1)
git中的一个分支只是一个指向提交的指针,它有一个非常简单的实现 - 它是一个文本文件,包含它指向的提交的校验和。
因此,在此示例中,您将拥有一个代表您的分支的文件.git/refs/heads/issue53
(是您的分支)。
当您删除git中的分支时,您删除表示该分支的文本文件(指针)。在这种情况下,.git/refs/heads/issu53