# @action/checkout 如何抓取所有的历史记录

- Link: https://www.ixiqin.com/2021/01/29/the-action-checkout-how-to-grab-all-the-history-records/
- Published: 2021-01-29T00:41:25+08:00
- Author: 白宦成

GitHub 的 Action Template 中默认带了一个 checkout 插件，这个插件可以实现将你的项目
Clone 到 CI 的运行环境中，从而执行各项操作。

为了提升速度，Github 在实际上实现的时候，默认会限制 depth=1，这就导致在 clone 的
时候，仅 clone 一个 commit ，如果你需要依赖 git 进行操作，则需要更多的 commit 。

在具体的实现过程中，你需要做的仅仅是在配置 github action 中的 fetch-depth 选项，
设置为你需要的 commit 数量。如果你需要的是所有的 commit， 则将该选项设置为 0。具体
配置如下

    ```shcb-line-numbers
    - uses: actions/checkout@v2
            with:
              fetch-depth: 0
    ```

这样你就可以在 CI 中访问到所有的数据。

不过，这样你并不能直接执行诸如 `git merge-base` 这样的命令，因为你虽然将所有的数据
抓取到了本地，但并没有建立相应的分支，则需要你先建立相应的分支，才能进行处理。

这个时候你可以在 action 当中新增一行，用来切换分支。

    ```shcb-line-numbers
    - run: git checkout x
    ```

这里的 x 是你需要操作的分支，不过你需要注意，切换过来以后，还需要重新切换回去，不然
你的代码就版本不对了。
