合并shuklsh-test-1分支PR后自动创建PR时报invalid refspec错误
问题原因与修复方案
你的报错invalid refspec ':refs/remotes/origin'主要源于两个核心配置问题:
1. 未完整拉取仓库分支与历史
默认的actions/checkout@v2采用浅克隆模式,仅拉取当前分支的最新提交,无法获取其他分支的引用信息,导致后续创建PR时无法识别目标分支shuklsh-test-2。
修复:在checkout步骤添加fetch-depth: 0,拉取完整仓库历史与所有分支:
- name: Checkout repo uses: actions/checkout@v2 with: token: ${{ secrets.AUTO_COMMIT_BOT_PAT }} fetch-depth: 0 # 关键配置:获取完整仓库数据
2. create-pull-request参数使用错误
你误用了branch参数——该参数用于创建新分支时指定分支名;而你的需求是基于已存在的shuklsh-test-1分支向shuklsh-test-2发起PR,应该使用head参数指定源分支。
同时,if条件中的嵌套${{}}属于冗余写法,工作流表达式上下文已自动解析,无需额外包裹。
修复后的创建PR步骤:
- name: Create automated PR if: github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true && github.base_ref == 'shuklsh-test-1' uses: peter-evans/create-pull-request@v4 with: token: ${{ secrets.AUTO_COMMIT_BOT_PAT }} title: ${{ github.event.pull_request.title }} body: ${{ github.event.pull_request.body }} base: shuklsh-test-2 head: shuklsh-test-1 # 替换原branch参数,指定PR的源分支 labels: Automated PR
额外注意事项
- 建议将Workflow文件放在仓库默认分支(如
main),确保PR合并到shuklsh-test-1时能正常触发Workflow;若仅放在shuklsh-test-1分支,需确认该分支的Workflow触发规则配置正确。 - 验证
AUTO_COMMIT_BOT_PAT权限:需拥有仓库的pull和push权限,确保能正常创建PR。
内容的提问来源于stack exchange,提问作者Darth.Vader
相关产品推荐
相关产品推荐

