Jenkins Git插件无论配置如何始终拉取所有分支问题咨询
我之前也踩过这个坑,Jenkins Git插件的分支配置有时候确实有点反直觉——明明选了特定分支,结果还是一股脑拉所有refs/heads/*的内容。咱们来一步步排查解决:
先核对「Branch Specifier」的配置
进到Job的「Source Code Management」→「Git」→「Branches to build」区域,确保你填的分支指定符是*/master(或者更精确的refs/heads/master),绝对不能留空或者填*这类通配符。很多时候就是这里不小心用了通配符,直接触发了全分支拉取。检查「Advanced Clone Behaviours」里的额外配置
点击「Add」按钮看看有没有添加「Fetch all branches」这个行为,如果有的话立刻移除!这个选项会强制插件忽略你设置的分支规则,直接拉取所有分支,优先级比Branch Specifier高得多。如果是Pipeline项目,确认脚本里的分支参数
要是你的Job是Pipeline类型,得保证git步骤里明确指定了分支:git url: 'ssh://git@bitbucket.company.com:7999/project/repo.git', branch: 'master'别省略
branch参数,也别写branches: ['*']这种会匹配所有分支的写法。手动指定Refspec(终极兜底方案)
要是上面的方法都没效果,就去Git配置的「Advanced」区域,找到「Refspec」输入框,手动填入你需要的规则:+refs/heads/master:refs/remotes/origin/master这样插件就会严格按照这个refspec执行fetch命令,彻底替换掉默认的
+refs/heads/*:refs/remotes/origin/*。
另外提一句,你看到的--depth=5是浅克隆参数,这个和分支拉取范围不冲突,只要refspec设置正确,浅克隆只会拉取指定分支的最近5个提交。
内容的提问来源于stack exchange,提问作者eeijlar

