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
我一直在关注 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