【问题标题】:Git branch deletionGit分支删除
【发布时间】:2010-02-26 15:52:08
【问题描述】:

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

它会从存储库中消失吗?还是可以通过git branch 导航到?

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

【问题讨论】:

    标签: git branch git-branch


    【解决方案1】:

    你可以删除分支,但先标记它,这样它的历史就不会消失。这样,分支不会出现在分支列表中,这有望阻止人们对其进行处理,但工作不会被永久删除(即使在运行垃圾收集之后)。例如,每当我有一个分支变得无关紧要,但我不准备永久删除它时,我将其标记为“archive/branch-name>”。

    master 或其他一些分支上:

    git tag archive/foo foo
    git branch -D foo
    

    这会在删除 foo 之前从 foo 分支创建一个名为 archive/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
    

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

    【讨论】:

    • @sardaukar:这也可以通过推送归档标签(使用git push--tags 选项)然后删除远程分支(在推送时使用:<branch-to-delete> refspec)与远程仓库一起使用)。例如:git tag archive/foo foo; git branch -D foo; git push --tags origin :foo
    • 如果 git 有办法自动通知人们“此分支已存档”并显示提交消息,如果人们试图从存档分支中提取,但它没有。
    • 非常好的答案,正是我想要的!可以肯定的是,如果分支在被删除之前已经合并回主分支,这是否有用?
    • 另一个相关问题(如果有人仍然关注此线程)是如果此分支涉及多个开发人员,我应该如何“关闭”(合并到 master 或归档中的标签或其他)?删除和标记分支(本地和远程)对于该分支的其他开发人员来说是不是太粗鲁了?
    • 这个答案很棒,很棒的解决方案
    【解决方案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】:

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

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

      【讨论】:

        【解决方案4】:

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

        如果您想将相关分支标记为死胡同,那么只需这样做(git 可能不会为您执行此操作,但您当然可以)!

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-04
          • 2022-10-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多