合并后删除分支时留下提交
Commits are left behind when branch is deleted after merge
考虑以下合并:
删除 'testmerge' 分支后,它的提交仍然存在。
这些提交是否会被删除(垃圾收集)?远程修剪似乎没有删除它们...
您的问题很可能源于对 Git 工作原理的误解。
在 Git 中,分支只是指向提交的指针。删除分支可能会导致提交 unreachable(在这种情况下它们不会出现在您的 GitHub 图表上),但前提是相关提交 not 包含在任何其他现有引用(分支或标记)的祖先中。此外,提交对象的垃圾收集/修剪仅适用于这些对象 unreachable.
在这种情况下,根据您的屏幕截图,回购看起来如下(删除 testmerge
之前):
-- A ----------- E [development]
\ /
B -- C -- D [testmerge]
请注意,提交 B
、C
和 D
尤其可以从 testmerge
访问;换句话说,它们包含在分支 testmerge
(提交 D
)顶端的 ancestry 中。但是,它们也是分支 development
(提交 E
)尖端的祖先。因为这三个提交可以从 development
访问,删除 testmerge
不会使它们成为 "go away":
-- A ----------- E [development]
\ /
B -- C -- D
并且因为这些提交仍然可以访问(来自 development
),运行 Git 的垃圾收集机制不会影响它们。
只要开发分支处于活动状态(或合并到另一个活动分支中,或作为标记历史记录的一部分),这些提交将永远不会被删除。
原因是 git 提交实际上是对象,每个对象都引用了存储库的当前状态、作者和提交者信息、提交消息,当然还有父提交或提交 (在合并提交的情况下)
由于您的开发分支上的 HEAD 提交引用了 testmerge 分支的前 HEAD 提交,因此该分支是 "kept alive"。
关于 Git 个可能对您有用的对象的参考:
http://git-scm.com/book/en/v2/Git-Internals-Git-Objects
您可能还对修剪历史的各种问题感兴趣:
How do I remove the old history from a git repository?
此外,如果这是不可取的,请考虑在将来进行快进合并之前将分支变基并压缩为单个提交。
考虑以下合并:
删除 'testmerge' 分支后,它的提交仍然存在。
这些提交是否会被删除(垃圾收集)?远程修剪似乎没有删除它们...
您的问题很可能源于对 Git 工作原理的误解。
在 Git 中,分支只是指向提交的指针。删除分支可能会导致提交 unreachable(在这种情况下它们不会出现在您的 GitHub 图表上),但前提是相关提交 not 包含在任何其他现有引用(分支或标记)的祖先中。此外,提交对象的垃圾收集/修剪仅适用于这些对象 unreachable.
在这种情况下,根据您的屏幕截图,回购看起来如下(删除 testmerge
之前):
-- A ----------- E [development]
\ /
B -- C -- D [testmerge]
请注意,提交 B
、C
和 D
尤其可以从 testmerge
访问;换句话说,它们包含在分支 testmerge
(提交 D
)顶端的 ancestry 中。但是,它们也是分支 development
(提交 E
)尖端的祖先。因为这三个提交可以从 development
访问,删除 testmerge
不会使它们成为 "go away":
-- A ----------- E [development]
\ /
B -- C -- D
并且因为这些提交仍然可以访问(来自 development
),运行 Git 的垃圾收集机制不会影响它们。
只要开发分支处于活动状态(或合并到另一个活动分支中,或作为标记历史记录的一部分),这些提交将永远不会被删除。
原因是 git 提交实际上是对象,每个对象都引用了存储库的当前状态、作者和提交者信息、提交消息,当然还有父提交或提交 (在合并提交的情况下)
由于您的开发分支上的 HEAD 提交引用了 testmerge 分支的前 HEAD 提交,因此该分支是 "kept alive"。
关于 Git 个可能对您有用的对象的参考: http://git-scm.com/book/en/v2/Git-Internals-Git-Objects
您可能还对修剪历史的各种问题感兴趣: How do I remove the old history from a git repository?
此外,如果这是不可取的,请考虑在将来进行快进合并之前将分支变基并压缩为单个提交。