You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向他人仓库提交PR时Prettier GitHub Action执行失败求助

问题:向他人仓库提交PR时Prettier GitHub Action检查失败

我在仓库中配置了Prettier GitHub Action,向自己仓库推送代码或提交PR时,检查都能正常通过;但向他人仓库提交PR时,代码虽然能成功格式化,检查却失败了,日志如下:

Run creyD/prettier_action@v4.2
Run PATH=$(cd $GITHUB_ACTION_PATH; npm bin):$PATH /home/runner/work/_actions/creyD/prettier_action/v4.2/entrypoint.sh
Installing prettier...
Prettifying files...
Files:
about.html 50ms
contact.html 13ms
directoryscr.js 60ms
index.html 10ms
member.html 10ms
members/osenberg.json 6ms
members/rehwinkel.json 4ms
members/template.json 3ms
memberscr.js 25ms
membersdir.html 43ms
memberslist.json 5ms
README.md 88ms
No node_modules/ folder.
No package-lock.json file.
[detached HEAD ad83deb] Prettified Code!
 Author: iosenberg <iosenberg@users.noreply.github.com>
 5 files changed, 69 insertions(+), 74 deletions(-)
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

    git push origin HEAD:<name-of-remote-branch>

Error: Process completed with exit code 128.

我已经尝试了多种方法,但没找到相关文档,恳请指点解决方向,参考分支为仓库的prettier分支。


解决方向

  • 问题根源:处理跨仓库PR时,GitHub Actions默认会检出PR的具体提交而非完整分支,导致Action处于分离HEAD状态,无法直接推送格式化后的代码。
  • 方案1:在Action的actions/checkout步骤中添加fetch-depth: 0参数,拉取完整的仓库历史,确保能正确关联到PR的源分支。
  • 方案2:修改Prettier Action的推送逻辑,明确指定推送目标分支,比如将推送命令改为git push origin HEAD:${GITHUB_HEAD_REF},利用GitHub提供的环境变量获取PR的源分支名。
  • 方案3:更换为支持fork PR场景的Prettier Action,部分维护完善的Action会自动处理分离HEAD的问题。
  • 额外注意:跨仓库PR需要目标仓库的所有者为Action授予写入权限,否则即使修复了分支状态问题,也无法推送格式化后的代码。

内容的提问来源于stack exchange,提问作者Ike Osenberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:31:00