checkout

Mr.Hope ... 2021-02-18 GitHub
  • Action
  • Workflow
大约 3 分钟

该操作将检出您的存储库 $GITHUB_WORKSPACE,使您的工作流可以访问它。

默认情况下,对于触发工作流的 ref / SHA,为了速度仅提取一次提交。如需获取所有分支和标签的所有历史记录,需要设置设置 fetch-depth: 0

身份验证令牌保留在本地 Git 配置中。这使您的脚本可以运行经过身份验证的 Git 命令。在工作后清理期间将删除令牌。

设置 persist-credentials: false 取消保留。

# 常用参数

# ref

需要检出的 ref,即可以填入特定分支、commitID 或 tag。默认为触发当前工作流的 ref。

# token

个人访问令牌,又称 Personal access token (PAT),用于配置机器 Git 配置,以运行需要身份验证的 Git 命令。

默认为工作流提供的 ${{ github.token }}

# fetch-depth

要获取的提交数。 0 表示所有分支和标签的所有历史记录。

默认为 1

# submodules

是否检出子模块。true 检出子模块 recursive 会递归检出子模块。

默认为 false

# 其他参数

# repository

带有作者的仓库名,如 Hope-Studio/innenu-app,默认为当前仓库。

# persist-credentials

是否将 token 等信息用于本地的 Git 配置,以便后续 Git 命令可以访问。

# path

$GITHUB_WORKSPACE 下用于放置存储库的相对路径

默认为 ./

# ssh-key

用于获取仓库的 SSH 私钥,用于配置机器 Git 配置,以运行需要身份验证的 Git 命令。

提示

默认的 token 有权限拉取工作流所在的仓库。

如果仓库包含了存放于其他代码托管商或私有的 submodules,或是的仓库,可能需要设置上述两选项之一,才能拉取对应 submodule。

# ssh-known-hosts

除了用户和全局主机密钥数据库外的已知主机。可以使用 ssh-keyscan 获得主机的公共 SSH 密钥。 例如,ssh-keyscan github.com。 github.com 的公钥总是隐式添加的。

相关信息

当您需要获取其他代码托管商的仓库时,需要设置此选项

# ssh-strict

是否进行严格的 ssh 校验,默认为 true,即不检查 IP,而是检查 Host 给出的密钥指纹是否匹配。

# clean

是否在拉取代码前执行 git clean -ffdx && git reset --hard HEAD

默认为 true

# lfs

是否下载 Git-LFS 文件。

默认为 false

# 例子

  • 获取所有标签与历史:

    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
    
    1
    2
    3
  • 检出特定分支

- uses: actions/checkout@v2
  with:
    ref: my-branch
1
2
3
  • 检出 HEAD^

    - uses: actions/checkout@v2
      with:
        fetch-depth: 2
    - run: git checkout HEAD^
    
    1
    2
    3
    4
  • 并列检出多个 repo

    - name: Checkout
      uses: actions/checkout@v2
      with:
        path: main
    
    - name: Checkout tools repo
      uses: actions/checkout@v2
      with:
        repository: my-org/my-tools
        path: my-tools
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  • 嵌套检出多个 repo

    - name: Checkout
      uses: actions/checkout@v2
    
    - name: Checkout tools repo
      uses: actions/checkout@v2
      with:
        repository: my-org/my-tools
        path: my-tools
    
    1
    2
    3
    4
    5
    6
    7
    8
  • 检出多个私有 repo

    - name: Checkout
      uses: actions/checkout@v2
      with:
        path: main
    
    - name: Checkout private tools
      uses: actions/checkout@v2
      with:
        repository: my-org/my-private-tools
        token: ${{ secrets.GitHub_PAT }} # `GitHub_PAT` is a secret that contains your PAT
        path: my-tools
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

相关信息

${{ github.token }} 仅限于当前存储库,因此,如果要签出其他私有存储库,则需要提供自己的 PAT。

  • 检出 PR HEAD commit 而不是 merge commit

    - uses: actions/checkout@v2
      with:
        ref: ${{ github.event.pull_request.head.sha }}
    
    1
    2
    3
  • 当关闭 PR 时将其检出

    on:
      pull_request:
        branches: [main]
        types: [opened, synchronize, closed]
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
  • 使用内置 token 进行提交

    on: push
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - run: |
              date > generated.txt
              git config user.name github-actions
              git config user.email github-actions@github.com
              git add .
              git commit -m "generated"
              git push
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

# 地址

地址: https://github.com/actions/checkout (opens new window)