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

问题描述 投票:0回答:1

enter image description here

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

git branch git-merge git-commit
1个回答
3
投票

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

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

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

删除分支实际上只是删除了refs/heads中的匹配文件。这就是为什么删除分支不会影响“分支”的提交(提交实际上不属于分支)。

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

作为第二个结果,一旦分支合并,就没有理由将其保留在“以防万一”中。

© www.soinside.com 2019 - 2024. All rights reserved.