[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2h5wcr5qxh6fg":3},{"code":4,"message":5,"data":6,"timestamp":55},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":40,"summary_md":41,"topic":42,"github_topics":45,"license":46,"homepage":47,"updated_at":48,"history":49},"actions\u002Fcheckout",21,"Action for checking out a repo","TypeScript",8968,2734,4,2654,[16,22,26,31,35],{"id":17,"title":18,"points":19,"comments":20,"posted_at":21},37380354,"Can't use 'tar -xzf' extract archive file",3,0,"2023-09-04",{"id":23,"title":24,"points":19,"comments":20,"posted_at":25},25229739,"GitHub Actions Stopped Working","2020-11-27",{"id":27,"title":28,"points":29,"comments":20,"posted_at":30},40933257,"Checkout v3 using node20 instead of node16",2,"2024-07-11",{"id":32,"title":33,"points":29,"comments":20,"posted_at":34},31017033,"Git v2.35.2 breaks actions\u002Fcheckout in containers","2022-04-13",{"id":36,"title":37,"points":38,"comments":20,"posted_at":39},44209775,"GitHub's checkout action is halting contributions",1,"2025-06-07","GitHub Actions 工作流运行前把仓库代码放到 runner 上的标准步骤。","把 `actions\u002Fcheckout` 当成需要固定版本、偶尔重读的基础设施，而不是要评估是否采用的新工具。跨大版本升级值得专门看一眼，因为 v5-v7 改变了 runner 版本要求，也改变了 fork PR 的默认行为。\n\n## 解决什么问题\n\n工作流在构建、测试或 lint 之前需要仓库文件出现在 `$GITHUB_WORKSPACE`，但 runner 启动时是空的。加上这个 action 后，代码就会出现在 runner 上，默认只拉取触发工作流的那一个 commit，后续步骤便能对它运行 `git` 和构建命令。没有它，每个工作流都得自己写 clone 步骤，并自行处理 token、ref 和清理。\n\n## 有什么不同\n\n除非设置 `fetch-depth: 0`，否则只拉取触发本次工作流的 commit，这让 job 更快，但依赖完整历史的工具需要相应调整输入。认证由 action 代劳：token 或 SSH key 会被配置好，使需要认证的 `git` 命令可用，并在 post-job 清理阶段移除。从 v6 起，`persist-credentials` 把凭据放在 `$RUNNER_TEMP` 下的单独文件中，而不是直接写进 `.git\u002Fconfig`；设为 `false` 则完全不持久化。\n\n影响最大的变化是 v7：当工作流由 `pull_request_target` 或 `workflow_run` 触发时，默认拒绝检出 fork PR 的代码，因为这两种触发方式会带着基仓库的 token、secret 和 runner 权限运行。要恢复旧行为，需要在阅读链接中的风险说明后设置 `allow-unsafe-pr-checkout: true`。这会真正改变工作流行为：依赖在那些触发条件下检出 fork 代码的 job，在调整之前会直接失败。\n\n## 谁值得试\n\n任何需要在 GitHub Actions 中拿到仓库内容的人都可以用，它通常是工作流的第一步。使用 `pull_request_target` 或 `workflow_run` 的维护者应把 v7 升级当作一次审查事项，因为新的默认值可能让原本能跑的 fork 检出 job 停下。在 Docker 容器 action 里执行需认证 `git` 命令的团队，要确认 runner 版本，v6 要求 Actions Runner v2.329.0 或更高。想改这个 action 本身的人则不行：README 明确表示目前不接受贡献。\n\n## 使用条件与边界\n\n最需要确认的是版本兼容性。v5 的 node24 运行时要求 runner v2.327.1 或更高；v6 把凭据放到单独文件后，Docker 容器 action 内的认证 git 命令要求 runner v2.329.0 或更高。自托管 runner 若停留在旧版本，升级后可能出问题。\n\n日常使用上，token 默认会写入本地 git 配置，使脚本可以 push，并在 post-job 清理时移除；如果 job 不应拥有该权限，就设 `persist-credentials: false`。需要完整历史的工作流必须设 `fetch-depth: 0`，在大仓库上会增加耗时。变更记录见[发布页](https:\u002F\u002Fgithub.com\u002Factions\u002Fcheckout\u002Freleases\u002Flatest)，fork 检出的取舍见[GitHub 的说明](https:\u002F\u002Fgh.io\u002Fsecurely-using-pull_request_target)。\n\n## HotRepo 点评\n\nHotRepo 在 2026-10-24 记录到 8,966 星，2026-10-25 记录到 8,967 星，这两天各增加 4 星；样本太短，无法判断趋势。升级前真正值得确认的是：你的工作流是否在 `pull_request_target` 或 `workflow_run` 下检出 fork 代码，以及 runner 是否满足 v5\u002Fv6 的最低版本。",{"slug":43,"name":44},"devops","运维与部署",[],"MIT","https:\u002F\u002Fgithub.com\u002Ffeatures\u002Factions","2026-10-25T03:21:27Z",[50,53],{"date":51,"stars":52,"stars_gained":13},"2026-10-24",8966,{"date":54,"stars":11,"stars_gained":13},"2026-10-25",1792918359]