这是git merge
场景。合并时,将创建New merge commit
,因此,如果我从New merge commit
返回,则可以看到所有Master
和Feature
分支提交的计划历史记录,直到{{1} }。这是我不了解的情况:如果删除Common base
分支,我认为Feature分支的提交将被删除,但是现实是当我站在Feature
时,删除{{1 }}分支,当我输入New merge commit
时,仍然可以看到Feature
分支的提交。那怎么可能?我有误会吗?
答案 0 :(得分:3)
评论中提到的一个分支只是一个注释,一个书签。
如果您在.git
目录中进行挖掘(出于教育目的,我建议您这样做),则会看到一个refs/heads
目录。每个分支在本地将包含一个文件(远程分支存储在refs/remotes
中)。
如果打开这些文件之一,您将看到其中包含一行:分支指向的最后一次提交的哈希。
删除分支实际上只是删除refs/heads
中的匹配文件。这就是为什么删除分支不会影响“分支”的提交(提交实际上并不属于分支)的原因。
因此,您还可以(再次,仅出于教育目的,我当然不建议您在日常工作流程中这样做)通过创建文件foo
创建分支refs/heads/foo
包含要分支指向的提交的 full 哈希。
第二个结果是,分支合并后,就没有理由将其保留在“万一”的情况下。