git - 删除不再在远程的跟踪分支

标签 git git-branch

有没有一种简单的方法可以删除所有远程等效项不再存在的跟踪分支?

例子:

分支(本地和远程)

  • 大师
  • 来源/主人
  • 起源/错误修复
  • 起源/错误修复-b
  • 起源/错误修复-c

在本地,我只有一个 master 分支。现在我需要处理 bug-fix-a,所以我检查它,处理它,然后将更改推送到远程。接下来,我对 bug-fix-b 执行相同的操作。

分支(本地和远程)

  • 大师
  • 错误修复
  • 错误修复-b
  • 来源/主人
  • 起源/错误修复
  • 起源/错误修复-b
  • 起源/错误修复-c

现在我有本地分支 masterbug-fix-abug-fix-b。 Master 分支维护者会将我的更改 merge 到 master 并删除他已经 merge 的所有分支。

所以现在的状态是:

分支(本地和远程)

  • 大师
  • 错误修复
  • 错误修复-b
  • 来源/主人
  • 起源/错误修复-c

现在我想调用一些命令来删除分支(在本例中为 bug-fix-abug-fix-b),它们不再被表示在远程存储库中。

它类似于现有命令 git remote prune origin,但更像是 git local prune origin

最佳答案

git remote prune origin 修剪不在远程的跟踪分支。

git branch --merged 列出已经 merge 到当前分支的分支。

xargs git branch -d 删除标准输入中列出的分支。

小心删除 git branch --merged 列出的分支。该列表可能包括 master 或您不想删除的其他分支。

要让自己有机会在删除分支之前编辑列表,您可以在一行中执行以下操作:

git branch --merged >/tmp/merged-branches && \
  vi /tmp/merged-branches && xargs git branch -d </tmp/merged-branches

关于git - 删除不再在远程的跟踪分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726949/

相关文章:

python - 如何编写 setup.py 以包含 Git 存储库作为依赖项

angularjs - Node 。 npm 安装后找不到 gulp

git - 在不让服务器上的每个人都访问我的 github 的情况下,通过 SSH 将 repo pull 到服务器的正确方法?

git - 在不丢失历史记录的情况下恢复到特定提交

git - 如何阻止 git 在分支之间移动我的更改?

git - Bitbucket自动从远程存储库 pull 最新代码

linux - 如何仅还原特定文件中的特定行?

git push origin [local-branch] 尝试推送到远程主分支而不是创建一个新分支

git - 如何列出已推送到远程的分支?

git - 恢复由于分离头而意外丢失的提交