使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
当前回答
Powershell:
git branch -D (git branch --merged |% { $_.trim() } )
其他回答
Powershell:
git branch -D (git branch --merged |% { $_.trim() } )
当遥控器本身不再存在时,我没有发现这里的答案有用。 我一直看到不存在的遥控器分支,但没有找到一个git命令来删除它们。
对我来说,解决方案是转到.git\refs\remotes目录,直接删除不再相关的文件。文件结构很容易理解。它与git branch -r的结构相同。
Windows的解决方案
适用于Microsoft Windows Powershell:
Git结帐大师;Git远程更新源——prune;git branch -vv | Select-String -Pattern ": gone]" | % {$_.toString(). trim()。Split(" ")[0]} | % {git branch -d $_}
解释
Git签出主切换到主分支
Git远程更新来源——修剪远程分支
Git分支-vv获取所有分支的详细输出(Git引用)
Select-String -Pattern ": gone]"只获取已从远程删除的记录。
% {$_.toString()。Split(" ")[0]}获取分支名称
% {git branch -d $_}删除分支
我很确定git remote prune origin是你想要的。
你可以运行它作为git远程剪枝起源-演练,看看它会做什么不做任何改变。
如果要删除所有已经合并到master中的本地分支,可以使用以下命令:
git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d
如果你使用main作为你的主分支,你应该相应地修改命令:
git branch --merged main | grep -v '^[ *]*main$' | xargs git branch -d
更多信息。