当前位置:  开发笔记 > 开发工具 > 正文

如果远程跟踪引用不再存在,请删除本地Git分支

如何解决《如果远程跟踪引用不再存在,请删除本地Git分支》经验,为你挑选了1个好方法。

我有一个本地和远程Git存储库.

在我的本地存储库中,我创建并切换到新分支: git checkout -b feature/niceNewFeature

我做我的编码git add .,git commitgit push我的feature/niceNewFeature分支远程存储库(如GitHub上).

在此之后,我创建了一个GitHub Pull Request来合并feature/niceNewFeature分支master- 在审查代码之后,我将这样做.

由于feature/niceNewFeature现在合并到master,我将在GitHub上删除它.

但是,在我的本地存储库中,如果执行git branch命令,仍会列出feature/niceNewFeature分支.

如何feature/niceNewFeature从本地存储库中删除分支,因为它已经与master远程存储库合并和删除?



1> martoncsukas..:

简短回答:

git fetch --prune

git branch -lvv | cut -c3- | awk '/: gone]/ {print $1}' | xargs git branch -d

详细解答:

首先,删除远程不再存在的任何远程跟踪引用:

git fetch --prune(或git fetch -p)

如果你这样做,然后你运行git branch -vv(详细),你会看到虽然feature/niceNewFeature仍然列出了分支,但上游分支现在"已经消失":

feature/niceNewFeature  832f7a7 [origin/feature/niceNewFeature: gone] Some commit message.

其次,让我们使用以下命令删除本地分支:

git branch -lvv | cut -c3- | awk '/: gone]/ {print $1}' | xargs git branch -d

它的作用基本上如下:

    列出-l详细模式(vv)中的所有local()分支(这几乎与我们以前的输出一样)

    cut是每行开头的第一个和第二个字符(它们是空格)

    awk它过滤"消失的"(/: gone]/),得到它们的第一列({print $1}).请记住,"消失"意味着远程跟踪参考不再存在.

    输出(feature/niceNewFeature在我们的例子中是要删除的分支的名称git branch -d)通过xargs命令管道传输到(删除),因此它将删除分支.请注意,分支必须在其上游分支中完全合并,因为仅使用-d选项,而不是-D(即--delete --force).

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有