为何MacOS终端中这段zsh脚本执行报错?
问题原因分析
核心问题:Git命令的参数顺序错误
你遇到的fatal: unrecognized argument错误,本质是**--before/--since这类过滤参数的位置放错了**。
git branch的语法规则明确:
--merged [<commit>]中的<commit>(比如你用的master)是位置参数,必须紧跟在--merged之后--before/--since属于传递给底层git for-each-ref的过滤选项,需要放在<commit>参数的前面
举个错误的示例(对应你第一段脚本的问题):
git branch -r --merged master --before="1 month ago" | egrep ...
这里Git会把--before当作git branch命令本身的参数,但git branch并不直接支持该选项,因此抛出“未识别参数”的错误。
正确的写法是把过滤参数放在<commit>之前:
git branch -r --before="1 month ago" --merged master | egrep ...
为什么第二段脚本正常?
你第二段脚本没有指定master这个位置参数,--merged后面直接跟--before/--since,Git会默认将当前分支作为--merged的参考分支,同时正确识别后续的过滤选项,因此能正常运行。
内容的提问来源于stack exchange,提问作者Marcus Anthony
相关产品推荐
相关产品推荐

