我有一个本地和远程Git存储库。
在我的本地存储库中,我创建并切换到新分支:git checkout -b feature/niceNewFeature
我的编码,git add .
,git commit
和git push
我的feature/niceNewFeature
分支到远程存储库(例如GitHub)。
在此之后,我创建了一个GitHub Pull请求以将feature/niceNewFeature
分支合并到master
- 在审核代码之后,我会这样做。
由于feature/niceNewFeature
现已合并到master
,我将在GitHub上将其删除。
但是,在我的本地存储库中,如果执行git branch
命令,仍会列出feature / niceNewFeature分支。
如何从本地存储库中删除feature/niceNewFeature
分支,因为它已经合并到master
并从远程存储库中删除了?
答案 0 :(得分:9)
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
分支,但是上游分支现在已经消失了#34;
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
)分支(这几乎与我们之前的输出相似)cut
是每行开头的第一个和第二个字符(空格)awk
过滤"消失了"一个(/: gone]/
),并得到他们的第一列({print $1}
)。记住,"去了"意味着远程跟踪参考不再存在。feature/niceNewFeature
)通过git branch -d
命令传送到xargs
(删除),因此它将删除科。请注意,分支必须在其上游分支中完全合并,因为仅使用-d
选项,而不是-D
(--delete --force
)。答案 1 :(得分:-1)
你这样做:
git remote prune origin
(如果'origin'是你的github遥控器的名字,否则用好名字取代)