【问题标题】:git branch -a lists merged/deleted branchesgit branch -a 列出合并/删除的分支
【发布时间】:2019-07-08 19:00:42
【问题描述】:

每当我编写命令git branch -a 以在本地和远程查看我的所有分支时,我都会以某种方式看到已合并并关闭的旧分支。如何摆脱我本地 git 或 github 中不再存在的这些分支?

【问题讨论】:

    标签: git github branch git-branch


    【解决方案1】:

    看起来它们仍然存在于本地存储库的远程跟踪部分中(如果名称看起来像 refs/remote/origin/branchname)。您可以使用命令git fetch --prune 删除远程存储库中不再存在的所有远程跟踪分支。该命令不会触及您的任何本地分支。

    【讨论】:

      【解决方案2】:

      如果git branch -a 显示它们,它们就存在于本地。这就是git branch 列出的内容:本地存在的东西。

      你的 Git 分支是 你的。它们不是其他 Git 的。

      您的 Git 的 远程跟踪名称,例如 origin/master也是您的,但您的 Git 会自动将它们与它在另一个 Git 上看到的内容同步在origin。也就是说,如果另一个 Git 有一个名为 feature/tall 的分支,那么当您将 Git 连接到他们的 Git 并让您的 Git 从他们那里获取新内容时,您的 Git 将创建或更新您的 origin/feature/tall

      您也可以让您的 Git 自动删除远程跟踪名称。这不是默认设置——如果您的 Git 上周看到了他们的 feature/tall,因此创建了您的 origin/feature/tall,而昨天他们删除了 他们的 feature/tall,您的 Git 将继续保留您的 @987654330 @ 默认。告诉你的 Git:如果他们删除了他们的,请删除我复制他们的远程跟踪名称,你有几个选择:

      • 运行git fetch origin --prune:这会调用origin 的Git,获取他们的分支列表,并找出要删除的origin/* 名称,同时更新origin
      • 运行git remote prune:这会在您的所有个遥控器上调用所有个Git。 (嗯,这是非常可配置的,但这是默认设置。)如果您只有一个名为 origin 的遥控器,则具有相同的效果。
      • fetch.prune 配置为true

        git config fetch.prune true
        

        现在所有git fetch 操作都会像您使用--prune 一样。

      您的分支是您的,您可以随意创建和删除。如果您不再需要分支feature/short,请将其删除。

      【讨论】:

        【解决方案3】:

        git branch -d <YOUR-BRANCH-NAME>

        如果您已合并来自分支的所有更改

        git branch -D <YOUR-BRANCH-NAME>

        如果您在要删除的分支上有未合并的更改。

        -D 充当强制删除

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-02
          • 1970-01-01
          • 1970-01-01
          • 2019-12-25
          • 1970-01-01
          • 2019-09-28
          • 2019-05-18
          相关资源
          最近更新 更多