1
0
forked from actions/checkout
This branch is 7 commits behind actions/checkout:main
2024-09-05 11:57:13 -04:00
2024-04-24 12:04:10 -04:00
2019-07-23 15:32:03 -04:00
2024-10-23 16:24:28 +02:00

构建和测试

Checkout V4

此操作将您的仓库检出到 $GITHUB_WORKSPACE 下,以便您的工作流可以访问它。

默认情况下,仅获取触发工作流的 ref/SHA 的单个提交。设置 fetch-depth: 0 可以获取所有分支和标签的所有历史记录。请参考 这里 了解不同事件中 $GITHUB_SHA 指向的提交。

认证令牌会持久化到本地 git 配置中。这使得您的脚本可以运行经过身份验证的 git 命令。该令牌会在作业后清理步骤中被移除。设置 persist-credentials: false 可以选择不保留。

当 Git 2.18 或更高版本不在您的 PATH 中时,将回退到 REST API 来下载文件。

新特性

请参考 发布页面 获取最新的发布说明。

使用方法

• uses: actions/checkout@v4

  with:
    # 仓库名称及所有者。例如,actions/checkout
    # 默认值: ${{ github.repository }}
    repository: ''

    # 要检出的分支、标签或 SHA。当检出触发工作流的仓库时,默认为该事件的引用或 SHA。
    # 否则,使用默认分支。
    ref: ''

    # 用于获取仓库的个人访问令牌 (PAT)。该 PAT 会配置到本地 git 配置中,使您的脚本可以运行经过身份验证的 git 命令。
    # 作业后步骤会移除该 PAT。
    #
    # 我们建议使用具有最低必要权限的服务账户。此外,在生成新的 PAT 时,请选择最低必要的范围。
    #
    # [了解有关创建和使用加密机密的更多信息](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
    #
    # 默认值: ${{ github.token }}
    token: ''

    # 用于获取仓库的 SSH 密钥。该 SSH 密钥会配置到本地 git 配置中,使您的脚本可以运行经过身份验证的 git 命令。
    # 作业后步骤会移除该 SSH 密钥。
    #
    # 我们建议使用具有最低必要权限的服务账户。
    #
    # [了解有关创建和使用加密机密的更多信息](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
    ssh-key: ''

    # 除用户和全局主机密钥数据库之外的已知主机。可以使用 `ssh-keyscan` 工具获取主机的公共 SSH 密钥。例如,`ssh-keyscan github.com`。
    # github.com 的公钥始终会隐式添加。
    ssh-known-hosts: ''

    # 是否执行严格的主机密钥检查。当为 true 时,会在 SSH 命令行中添加 `StrictHostKeyChecking=yes` 和 `CheckHostIP=no` 选项。
    # 使用 `ssh-known-hosts` 输入来配置其他主机。
    # 默认值: true
    ssh-strict: ''

    # 连接到远程 SSH 主机时使用的用户。默认值为 'git'。
    # 默认值: git
    ssh-user: ''

    # 是否将令牌或 SSH 密钥配置到本地 git 配置中
    # 默认值: true
    persist-credentials: ''

    # 在 $GITHUB_WORKSPACE 下放置仓库的相对路径
    path: ''

    # 是否在获取前执行 `git clean -ffdx && git reset --hard HEAD`
    # 默认值: true
    clean: ''

    # 针对给定过滤器进行部分克隆。如果设置了此选项,则会覆盖 sparse-checkout。
    # 默认值: null
    filter: ''

    # 对给定模式进行稀疏检出。每个模式应以换行符分隔。
    # 默认值: null
    sparse-checkout: ''

    # 指定在执行稀疏检出时是否使用 cone 模式。
    # 默认值: true
    sparse-checkout-cone-mode: ''

    # 要获取的提交数量。0 表示所有分支和标签的所有历史记录。
    # 默认值: 1
    fetch-depth: ''

    # 是否获取标签,即使 fetch-depth > 0。
    # 默认值: false
    fetch-tags: ''

    # 获取时是否显示进度状态输出。
    # 默认值: true
    show-progress: ''

    # 是否下载 Git-LFS 文件
    # 默认值: false
    lfs: ''

    # 是否检出子模块:`true` 表示检出子模块,`recursive` 表示递归检出子模块。
    #
    # 当未提供 `ssh-key` 输入时,以 `git@github.com:` 开头的 SSH URL 会被转换为 HTTPS。
    #
    # 默认值: false
    submodules: ''

    # 通过运行 `git config --global --add safe.directory <path>` 将仓库路径添加为 Git 全局配置的安全目录。
    # 默认值: true
    set-safe-directory: ''

    # 尝试克隆的 GitHub 实例的基本 URL,将使用环境默认值从工作流运行的同一实例获取,除非指定。示例 URL 包括 https://github.com 或 https://my-ghes-server.example.com
    github-server-url: ''

场景

仅获取根文件

• uses: actions/checkout@v4

  with:
    sparse-checkout: .

仅获取根文件和 .githubsrc 文件夹

• uses: actions/checkout@v4

  with:
    sparse-checkout: |
      .github
      src

仅获取单个文件

• uses: actions/checkout@v4

  with:
    sparse-checkout: |
      README.md
    sparse-checkout-cone-mode: false

获取所有标签和分支的所有历史记录

• uses: actions/checkout@v4

  with:
    fetch-depth: 0

检出不同分支

• uses: actions/checkout@v4

  with:
    ref: my-branch

检出 HEAD^

• uses: actions/checkout@v4

  with:
    fetch-depth: 2
• run: git checkout HEAD^

并行检出多个仓库

• name: Checkout

  uses: actions/checkout@v4
  with:
    path: main

• name: Checkout tools repo

  uses: actions/checkout@v4
  with:
    repository: my-org/my-tools
    path: my-tools

嵌套检出多个仓库

• name: Checkout

  uses: actions/checkout@v4

• name: Checkout tools repo

  uses: actions/checkout@v4
  with:
    repository: my-org/my-tools
    path: my-tools

检出多个私有仓库

• name: Checkout

  uses: actions/checkout@v4
  with:
    path: main

• name: Checkout private tools

  uses: actions/checkout@v4
  with:
    repository: my-org/my-private-tools
    token: ${{ secrets.GH_PAT }} # `GH_PAT` 是包含您 PAT 的机密
    path: my-tools
  • ${{ github.token }} 的范围限定在当前仓库,因此如果您想检出其他私有仓库,则需要提供您自己的 PAT

检出拉取请求的 HEAD 提交而不是合并提交

• uses: actions/checkout@v4

  with:
    ref: ${{ github.event.pull_request.head.sha }}

在关闭事件上检出拉取请求

on:
  pull_request:
    branches: [main]
    types: [opened, synchronize, closed]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      ◦ uses: actions/checkout@v4

使用内置令牌推送提交

on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      ◦ uses: actions/checkout@v4

      ◦ run: |

          date > generated.txt
          # 注意:以下账户信息在 GHES 上不起作用
          git config user.name "github-actions[bot]"
          git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git add .
          git commit -m "generated"
          git push

注意: 用户邮箱为 {user.id}+{user.login}@users.noreply.github.com。请参阅用户 API: https://api.github.com/users/github-actions%5Bbot%5D

使用内置令牌向拉取请求推送提交

在拉取请求触发器中,需要指定 ref,因为 GitHub Actions 默认以分离的 HEAD 模式检出,这意味着它不会默认检出您的分支。

on: pull_request
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      ◦ uses: actions/checkout@v4

        with:
          ref: ${{ github.head_ref }}
      ◦ run: |

          date > generated.txt
          # 注意:以下账户信息在 GHES 上不起作用
          git config user.name "github-actions[bot]"
          git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git add .
          git commit -m "generated"
          git push

注意: 用户邮箱为 {user.id}+{user.login}@users.noreply.github.com。请参阅用户 API: https://api.github.com/users/github-actions%5Bbot%5D

推荐权限

在 GitHub Actions 工作流中使用 checkout 操作时,建议设置以下 GITHUB_TOKEN 权限以确保正常功能,除非通过 tokenssh-key 输入提供了替代身份验证:

permissions:
  contents: read

许可证

此项目中的脚本和文档均根据 MIT 许可证 发布

Languages
TypeScript 94.2%
Shell 5.2%
Dockerfile 0.3%
JavaScript 0.2%