使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
当前回答
git分支的Powershell版本——merged master | grep -v '^[*]*master$' | xargs git branch -d
git分支——合并主| % {if ($ _ -notmatch \ *。*主){git分支- d " $(美元_.Trim())”}}
当您在主分支上时,这将删除已合并到主分支中的任何本地分支。
Git检查主切换。
其他回答
似乎没有一个安全的一行代码,有太多的边缘情况(比如分支的名称中有“master”,等等)。最安全的是以下步骤:
Git分支-vv | grep 'gone]' > stale_branches.txt 查看文件并删除想要保留的分支(例如主分支!);您不需要编辑任何一行的内容 Awk '{print $1}' stale_branches.txt | xargs git branch -d
不知道如何一次性完成,但是git git branch -d <branchname>只会在完全合并的情况下删除本地分支。注意小写的d。
git branch -D <branchname>(注意大写D)将删除本地分支,无论其合并状态如何。
除了Schleis的答案(它工作得很完美),它还可以集成到Visual Studio中,所以在VS中打开git repo时修剪本地分支非常简单。
您可以使用外部工具功能调用sh.exe (git bash)与特定的目录和命令。它位于工具>外部工具菜单选项中(在VS 2022 17.1.0中)。我使用的参数如下:
命令:{Path-To-Git-Installation-Location} \ bin \ sh.exe
参数:——cd=$(SolutionDir) -c "git fetch -p;Git branch -r | awk '{print $1}' | egrep -v -f /dev/ fg /0 <(Git branch -vv | grep origin) | awk '{print $1}' | xargs Git branch -d"
初始目录:$(SolutionDir)
Git修剪本地分支的截图
值得注意的是,只有当你在VS中打开的解决方案在git repo目录中时,这才会起作用。
最后提醒-这可以通过Visual Studio的按键绑定用户界面在设置>通用>键盘和搜索工具进行按键绑定。ExternalCommand[n],其中n是外部命令表中的位置,您有这个外部工具的位置(它们可以在工具>外部工具对话框中重新排序)。请看下面的截图。
键盘绑定外部工具命令
检查目标
$(git分支| grep -Eiv“master|develop|branchYouWantToLive”);执行echo $target;完成
使用for &子命令运行
$(git分支| grep -Eiv“master|develop|branchYouWantToLive”);做git分支-D $target;完成
你可以扩展其他关于分支的东西。
基于上面的答案,我使用了更短的一行:
git remote prune origin | awk 'BEGIN{FS="origin/"};/pruned/{print $2}' | xargs -r git branch -d
此外,如果你已经修剪过了,并且有局部的树枝悬挂着,那么这将清理它们:
git branch -vv | awk '/^ .*gone/{print $1}' | xargs -r git branch -d