在Git中,分支的“删除”是什么意思?
它会从存储库中消失吗?还是可以通过via导航git branch
?
我真正想做的是将一个分支标记为“死胡同”,即该分支距离主节点太远了,尽管该分支下有一些好主意,但没人可以以此为起点。喜欢保留它,以供参考。
Answers:
您可以删除分支,但先对其进行标记,这样它的历史不会消失。这样,该分支不会出现在分支列表中,这有望阻止人们对其进行处理,但是该工作不会被永久删除(即使在运行垃圾收集之后)。例如,只要我有一个无关紧要的分支,但不准备永久删除它,就将其标记为“ archive / < branch-name >”。
在master
其他分支上时:
git tag archive/foo foo
git branch -D foo
这archive/foo
将foo
在删除之前从分支创建一个标记foo
。您还可以在标签中添加一条消息,以说明分支中的内容,存在的原因,为何现在变成死胡同等等。
git tag -m 'Foo is deprecated in favor of bar' archive/foo foo
记录为什么不赞成使用分支的能力可能是标记的优势,而不是将分支移动到备用名称空间。
如果您需要恢复已以这种方式存档的分支,则只需以下操作:
git branch foo archive/foo
git tag -d archive/foo # Optional
现在该分支又恢复了,好像从未删除过一样。
Git分支存储为对修订的引用。如果删除分支,则引用将被删除;否则,将删除引用。如果没有其他引用该修订,则最终将对其进行垃圾回收。另外,如果您删除分支,则该分支已正确消失(从存储库中删除)。如果要将分支标记为已弃用,但保留它以备后用,则可以将分支移到子目录:
$ git branch
* master
testing_feature_one
testing_feature_two
$ git branch -m testing_feature_one deprecated/testing_feature_one
$ git branch
deprecated/testing_feature_one
* master
testing_feature_two
另外,您可以为已弃用的分支创建一个单独的存储库,将它们拉开,然后从原始分支中删除它们。在这两种情况下,您都将影响跟随分支的所有用户-其存储库的内容不会更改(其分支名称也不会更改),但是如果他们尝试再次拉出,则它们会必须更改其配置目标。
git branch -D <branchName>
将从存储库中删除您的分支。您将无法再查看或浏览。同样,您将丢失在该分支中所做的所有文件更改。
--tags
选项git push
),然后删除远程分支(推入时使用refspec:<branch-to-delete>
)。例如:git tag archive/foo foo; git branch -D foo; git push --tags origin :foo