【问题标题】:Why does git branch history remain when the branch has been deleted为什么删除分支后git分支历史仍然存在
【发布时间】:2015-07-07 12:09:53
【问题描述】:

我在 git 中删除了一个分支,并通过运行确认它不再存在:

git branch -a

但是,我仍然可以使用我的 Git GUI 工具查看分支,尽管没有标记。

这是标准行为吗?我期待该分支的历史成为它合并到的分支的一部分。

【问题讨论】:

  • 因为这些提交仍然可以从另一个引用(分支或标签)访问,所以它们和它们之间的祖先路径在您的 GUI 中仍然可见。
  • @Jubos - 我如何确定仍然可以到达的路线?
  • 对于分支,git branch --contains <commit>,其中<commit> 是您删除的分支中的提交之一,将列出可以访问<commit> 的分支。标签的类似命令:git tag --contains <commit>.

标签: git merge branch


【解决方案1】:

该分支的历史它被合并到的分支的一部分。如果您从合并到的分支中运行git log,您将在合并后的分支中看到提交。它们是历史的一部分。

那你为什么还在“看到树枝”呢?因为你看到的是一系列的祖先-后代关系,而不是分支。

git 中的“分支”不是一系列提交。我们这样对待它,因为它对我们的心智模型有意义,但分支只是一个可移动的标签。它是分配给特定提交的名称。当您在分支 X 上工作并创建新提交时,git 创建该提交,将其父级设置为 X 指向的当前提交,然后移动分支 X 以指向新提交。

所以,假设您在分支 master 中。分支主控当前指向提交 1(我将使用数字来指代提交;git 使用哈希,但没有区别)。你做了一些改变,运行git commit。这意味着 git 创建了一个新的提交,提交 2。提交 2 的父级是提交 1。然后将标记 master 移动到提交 2。所以如果你打开你的 git GUI 工具,你会看到 master 在提交 2,然后在其下方提交 1 行。那是因为 1 是 2 的父提交。

所以现在假设您创建了一个新分支。你运行git branch new; git checkout new。现在你站在新的分支中。新分支是从您站立时创建的,因此它也指向提交 2。在您的 GUI 工具中,您会看到 master 和 new 都指向提交 2。

现在进行一些更改,运行git commit。这将创建提交 3,其中提交 2 作为其父提交,并将分支标签新移动到 3。分支标签 master 仍然指向 2。

现在回到主控,git checkout master,然后进行一些更改,git commit。同样,新的提交(比如说 4),这个也有 2 作为它的父级。在 GUI 工具中,您可以看到 3 和 4 都有一条线将它们连接到 2。

现在,与您的问题相关的部分。仍在 master 中,运行 git merge new。这将合并到新的分支中。那么什么是git中的合并?合并只是一个提交,它没有一个父提交,而是有两个父提交。当您运行 git merge new 时,git 所做的是创建一个新的提交 5,并将 提交 3 和 4 设置为其父级(4 因为它是一个 master 指向,3 因为它是一个新点至)。因此,如果您打开您的 GUI 工具,您将看到您在这种情况下所期望看到的内容:master 指向 5,从中 行,1 到 4,1 到 3,因为两个 提交都是 5 的父母。由于您没有告诉 git 其他情况,您仍然会看到新的分支标记提交 3。

现在,你创建的所有这些 git 历史完全独立于分支,如果你删除分支,它仍然存在。请记住,分支只是附加到提交的标签。删除分支不会删除提交或其任何历史记录,它只会删除标记。所以现在你可以运行git branch -d new,新分支就会消失。但是,“在新分支中”的提交 3 仍然存在。提交 3 的父级仍然是 2,提交 3 仍然是 5 的父级之一。那么,如果您查看 GUI 工具会发生什么?好吧,你会看到提交 5 被标记为 master,然后出现两行,将提交 4 和 3 标记为其父级,然后来自 4 和 3 的行将 2 标记为它们的父级,然后是从 2 到 1 的行。所以与删除新分支之前完全相同。

我希望这能说明问题。

【讨论】:

    猜你喜欢
    • 2021-03-29
    • 2015-12-22
    • 2023-01-17
    • 2018-03-11
    • 2015-07-24
    • 2014-09-29
    • 2021-09-03
    • 2017-12-08
    • 2021-04-18
    相关资源
    最近更新 更多