【发布时间】:2019-07-08 19:00:42
【问题描述】:
每当我编写命令git branch -a 以在本地和远程查看我的所有分支时,我都会以某种方式看到已合并并关闭的旧分支。如何摆脱我本地 git 或 github 中不再存在的这些分支?
【问题讨论】:
标签: git github branch git-branch
每当我编写命令git branch -a 以在本地和远程查看我的所有分支时,我都会以某种方式看到已合并并关闭的旧分支。如何摆脱我本地 git 或 github 中不再存在的这些分支?
【问题讨论】:
标签: git github branch git-branch
看起来它们仍然存在于本地存储库的远程跟踪部分中(如果名称看起来像 refs/remote/origin/branchname)。您可以使用命令git fetch --prune 删除远程存储库中不再存在的所有远程跟踪分支。该命令不会触及您的任何本地分支。
【讨论】:
如果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,请将其删除。
【讨论】:
git branch -d <YOUR-BRANCH-NAME>
如果您已合并来自分支的所有更改
或
git branch -D <YOUR-BRANCH-NAME>
如果您在要删除的分支上有未合并的更改。
-D 充当强制删除
【讨论】: