将删除目录

时间:2017-06-27 01:27:04

标签: git batch-file

这是我的要求:

  1. 遍历给定目录的所有子文件夹。
  2. 在每个子文件夹中,删除除主分支以外的所有本地分支。
  3. 对于项目#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
    

2 个答案:

答案 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执行它时,包含上述内容的批处理文件按预期工作。

请注意,这仅用于维护目的,假设我只需要主分支并且所有本地分支都已合并。