![]() |
1
217
分支只是Git中提交的指针。在Git中,每个提交都有一个完整的源树,它与SVN是一个非常不同的结构,其中所有分支和标记(按约定)都位于存储库的单独“文件夹”中,并与特殊的“主干”一起。 如果分支在删除之前被合并到另一个分支中,那么在删除第一个分支时,仍然可以从另一个分支访问所有提交。他们保持原样。 如果删除分支而不合并到另一个分支中,那么该分支中的提交(直到从仍然可以访问的提交中分叉的点)将不再可见。 提交仍将保留在存储库中,并且可以在删除后立即恢复它们,但最终它们将被垃圾收集。 |
![]() |
2
78
在Git中,分支只是在提交的有向非循环图(DAG)中提交的指针(引用)。这意味着删除分支只会删除对提交的引用,这可能会使DAG中的某些提交无法访问,因此不可见。但是,在删除的分支上的所有提交都将仍然在存储库中,至少在不可访问的提交被修剪之前(例如,使用
注意
还请注意,如果存在不可到达的提交,则仅是已删除分支的最后一个尖端与合并到另一个现有分支的提交、任何标记的提交或分支点之间的提交,以较晚者为准。例如,在以下情况下: ----O----*----*----/M----* <-- master <-- HEAD \ / \--.----.--/--x---y <-- deleted branch 删除分支后,只有提交“x”和“y”将无法访问。
如果您在
如果在reflog for head中找不到刚刚删除的分支的提示,可以尝试使用
独立于如何找到已删除分支的尖端,可以撤消删除,或者使用
但是请注意,分支的reflog将丢失。
还有
git-resurrect.sh
脚本
|
![]() |
3
2
如果您担心意外删除的分支,并且不再有您的repo的本地副本,那么对企业git服务器(如gerrit)的扩展将检测历史重写和分支删除,并将它们备份到一个特殊的引用下,以便在需要时恢复它们。不会被垃圾收集修剪。如果出于法律原因需要,Gerrit管理员仍然可以删除选定的提交。 |