Git分支删除

时间:2010-02-26 15:52:08

标签: git branch git-branch

在Git中,分支的“删除”是什么意思?

它会从存储库中消失吗?或者它仍然可以通过git branch导航?

我真正想做的是将分支标记为“死胡同”,即分支远离主干,没有人应该将它作为起点,尽管在该分支下有一些好的想法,所以我们想保留它,供参考。

4 个答案:

答案 0 :(得分:153)

您可以删除分支,但先将其标记,以使其历史记录不会消失。这样,分支就不会显示在分支列表中,这应该会阻止人们对其进行处理,但是工作将不会被永久删除(即使在运行垃圾收集之后)。例如,每当我有一个变得无关紧要的分支,但我不准备永久删除它时,我将其标记为“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

现在分支又回来了,好像它从未删除过一样。

答案 1 :(得分:2)

git branch -D <branchName>将从存储库中删除您的分支。你将无法再看到它或导航了。此外,您将丢失在该分支中进行的所有文件更改。

https://git-scm.com/docs/git-branch

答案 2 :(得分:2)

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

或者,您可以为已弃用的分支创建单独的存储库,将它们拉出来然后从原始分支中删除它们。在任何一种情况下,你都会影响跟随分支的任何用户 - 他们的存储库的内容不会改变(他们的任何分支名称都不会改变),但如果他们试图再次拉动,他们会必须改变他们的配置目标。

答案 3 :(得分:0)

它不能通过git分支导航,并且在执行垃圾收集之前,它不会从存储库中丢失。

如果你想将有问题的分支标记为死胡同,那么就这样做(git可能不适合你,但你当然可以)!

将其标记(以您喜欢的任何方式)作为历史参考。