Git分支缺失?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

在Git中,“删除”分支意味着什么?

它会从仓库里消失吗?还是仍然可以通过git branch?

我真正想做的是把一支树枝标为“死胡同”,就是说,它离主干太远了,没有人可以把它作为起点,尽管在那支树枝上有一些好的想法,所以我们想把它保留下来,以供参考。

提问于
用户回答回答于

可以删除分支,但首先标记它,这样它的历史就不会消失。这样,分支就不会出现在分支列表中,这可能会阻止人们使用它,但是工作不会被永久删除(即使在垃圾收集运行之后)。例如,每当我有一个分支已经变得不相关,但我不准备永久删除它,我标记为“存档/<分支名称>“。

而在master或其他分支机构:

git tag archive/foo foo
git branch -D foo

这将创建一个名为archive/foofoo删除之前的分支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

或者,可以为不推荐的分支创建一个单独的存储库,将它们拉过,然后从原始分支中删除它们。在这两种情况下,都会影响任何跟踪分支的用户--他们的存储库的内容不会改变(他们的分支名称也不会改变),但是如果他们再次尝试拉出,他们将不得不在配置中更改他们的目标。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动