git 3 路合并后删除分支。它看起来像什么图表?

git deleting branch after 3 way merge. What does it look like as a diagram?

我一直在关注 Scott Chacon 的 Pro Git Book,我已经到了第 3 章的结尾,我们刚刚完成了三向合并。见下图(我自己画的图,不是书上的截图):

将'master'与'issue53'合并后,导致合并提交c6,作者说我们可以删除分支 'issue53'.

git branch -d issue53

引擎盖下的那个分支实际上发生了什么,结果图会是什么样子?我问这个是因为作者没有解决这个问题。分支还会在那里,只是没有指向吗?还是有什么我不知道的魔法在发生?

What actually happens to that branch under the hood

这取决于 分支 这个词的意思。参见 What exactly do we mean by "branch"?

and what would the resultant diagram look like?

用 ASCII 而不是花哨的图形绘制它,我得到:

C0<-C1<-C2<-C4<---C6   <-- master (HEAD)
          \      /
           C3<-C5

也就是说, 提交 根本没有发生任何事情。然而,name issue53,曾经指向提交 C5,不再存在(根本)。

由于图中的每个提交仍然是 find-able,从名称 master 开始并向后工作,因此每个提交都不受 Git 的垃圾收集过程的影响。

git 中的一个分支只是一个指向提交的指针,它有一个非常简单的实现——它是一个包含它所指向的提交的校验和的文本文件。

所以在这个例子中,你会有一个文件 .git/refs/heads/issue53 代表你的分支(是你的分支)。

并且当您在 git 中删除一个分支时,您将删除代表该分支的文本文件(指针)。在这种情况下,.git/refs/heads/issu53