这是我的要求:
对于项目#2,以下语句在子文件夹中手动执行时有效。
git branch | grep -v " master" | xargs git branch -D
我想创建一个批处理文件,它将在每个子文件夹中执行上述语句。
我尝试了以下但无法使其正常工作。请帮我确定声明的错误。
FOR /D %%G in ("C:\parent\*") Do (echo Updating %%G ...) && (cd %%G) && git branch | grep -v " master" | xargs git branch -D
答案 0 :(得分:0)
在每个子文件夹中,删除除主分支以外的所有本地分支。
这不是Git的工作原理。这可能与Subversion有关,而不是Git 删除分支后, all repo的分支就会消失,而不是子文件夹。
唯一可以删除Git repo子文件夹中的分支的情况是,该子文件夹是根文件夹是 submodule 。
另外,您可以考虑使用-d
而不是-D
,以避免删除未完全合并的分支。请参阅“Can I delete all the local branches except the current one?”。
答案 1 :(得分:0)
谢谢你的帮助。
事实证明我遇到了以下错误:
'grep' is not recognized as an internal or extenal command.
我没有看到它,因为我通过双击执行批处理文件,然后命令提示符将显示并立即关闭,所以我错过了错误消息。
无论如何,当我使用Git bash执行它时,包含上述内容的批处理文件按预期工作。
请注意,这仅用于维护目的,假设我只需要主分支并且所有本地分支都已合并。