使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
当前回答
它将列出远程跟踪分支从remote中删除的本地分支
$ git remote prune origin --dry-run
如果你想从未被跟踪的本地去引用这些本地分支
$ git remote prune origin
其他回答
如果要删除所有已经合并到master中的本地分支,可以使用以下命令:
git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d
如果你使用main作为你的主分支,你应该相应地修改命令:
git branch --merged main | grep -v '^[ *]*main$' | xargs git branch -d
更多信息。
更短更安全的一行代码:
git branch -d $(git branch --merged | cut -c 3- | grep -v master)
在运行分支之前,请确保签出到尚未合并的分支。因为您不能删除当前签入的分支。
除了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是外部命令表中的位置,您有这个外部工具的位置(它们可以在工具>外部工具对话框中重新排序)。请看下面的截图。
键盘绑定外部工具命令
虽然迟到了,但是你可以使用——no-contains选项来避免在使用branch -merged时删除你的主分支
git branch --no-contains master --merged master | xargs git branch -d
基于上面的答案,我使用了更短的一行:
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