git 如何维护已删除分支的提交?

O. *_*dze 2 git branch git-merge git-commit

在此处输入图片说明

这是git merge情景。当我合并时,New merge commit被创建,所以如果我从 返回New merge commit,我可以看到所有MasterFeature分支提交的预定历史记录,直到Common base。这是我不明白的场景:如果我删除Feature分支,我认为 Feature 分支提交会被删除,但实际情况是,当我站在 上时New merge commit,删除Feature分支后,我仍然可以Feature在键入时看到分支提交git log。这怎么可能?我是不是误会了什么?

pad*_*win 7

正如评论中提到的,一个分支只是一个笔记,一个书签。

如果您在.git目录中挖掘一下(出于教育目的,我建议您这样做),您将看到一个refs/heads目录。它将包含您在本地拥有的每个分支的一个文件(远程分支存储在 中refs/remotes)。

如果您打开其中一个文件,您将看到它包含一行:分支指向的最后一次提交的哈希值。

删除分支实际上只是删除refs/heads. 这就是为什么删除一个分支不会影响“分支”的提交(提交并不真正属于一个分支)。

因此,您还可以(同样,仅作为教育目的,我不建议在日常工作流程中这样做)foo通过创建文件来创建分支,该文件的refs/heads/foo内容是您想要分支的提交的完整哈希指向。

第二个结果是,一旦分支被合并,就没有理由“以防万一”保留它。