git branch -a 列出合并/删除的分支

Phi*_*-lf 2 git github

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

tor*_*rek 5

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

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

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

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

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

    git config fetch.prune true
    
    Run Code Online (Sandbox Code Playgroud)

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

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


dun*_*nni 2

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