Actions and Git Storage

Where Actions Fits Beside Git's Own Object Storage

A workflow is a blob in Git 1,932 's object database (Git), and a run always uses the workflow as it exists in the commit it runs for, GITHUB_SHA (4943462 above). Pull requests add refs that GitHub 29 maintains, visible from any clone; in the fork from First Pull Request Etiquette, whose pull request is still open:

The workflow's blob, and the refs GitHub keeps for a pull requestShell
git -C ../booknest ls-tree --abbrev=7 4943462 .github/workflows/
git ls-remote origin 'refs/pull/*'
git fetch -q origin refs/pull/1/merge && git log --oneline --graph -3 FETCH_HEAD | cut -c1-72
Output
100644 blob 3bc68df    .github/workflows/inside-a-job.yml
3f5f3838dd465d16ae19efe4340c40de90728d59    refs/pull/1/head
5e043d406ba7ca3843d91c0918fff4f48e955691    refs/pull/1/merge
*   5e043d4 Merge 3f5f3838dd465d16ae19efe4340c40de90728d59 into d0dd1f61
|\
| * 3f5f383 Describe the Octocat image for screen readers
|/
* d0dd1f6 Pointing to the guide for forking

refs/pull/1/head is the branch tip; refs/pull/1/merge is a test merge into the base, recreated when either side moves and dropped when the pull request closes. A pull_request workflow checks out that merge commit, so CI tests the result of merging. Everything else a run produces lives outside Git: logs, artifacts and caches sit in GitHub's storage (logs and artifacts for 90 days by default), and the API answers a request for this run's logs with HTTP/2 303 to https://results-receiver.actions.githubusercontent.com/ 743 .... None of it enlarges the repository or survives a clone.