Git diff 无法在 Github Actions 上工作 -fatal: bad object 7100c3bbc34a9667ca9034a8ec321677ed4b5828

Rob*_*obo 5 git github git-diff github-actions

我想查看 Github Actions 上两次提交之间的文件之间的差异。这是我的main.yml文件:

name: GitHub Actions Test
on: [push]
jobs:
  Test-GitHub-Actions:
    runs-on: ubuntu-latest
    steps:
      - name: Adding actions/checkout@v2
        uses: actions/checkout@v2
      - name: Git diff
        run: git diff 7100c3bbc34a9667ca9034a8ec321677ed4b5828 4c5952b60b8a5911154534ea1fefec3567c49c52 ${{ github.workspace }}/data.xml
      - name: Run Python
        run: |
          python3 ${{ github.workspace }}/.github/workflows/app.py
      - name: Setup git - step 1
        run: git config --global user.email "adithraghavs@gmail.com"
      - name: Setup git - step 2
        run: git config --global user.name "Adith Raghav"
      - name: Check for changes
        run: git status
      - name: Stage changed files
        run: git add .
      - name: Commit changed files
        run: git commit -m "auto updating history.json and maybe checked for changes in data"
      - name: fetch from main 
        run: git fetch origin main
      - name: Push to main
        run: git push origin HEAD:main
Run Code Online (Sandbox Code Playgroud)

我在 Github Actions 上收到以下错误:

fatal: bad object 7100c3bbc34a9667ca9034a8ec321677ed4b5828
Error: Process completed with exit code 128.
Run Code Online (Sandbox Code Playgroud)

我不知道这是什么意思。它在我本地完美运行。你知道如何修复它吗?

tor*_*rek -3

切勿在 GitHub Action 中使用原始哈希 ID。

请注意,这checkout@v2会产生浅克隆。浅克隆是一种故意省略各种 Git 对象以便克隆速度更快的克隆。这样的克隆不能用于大多数Git目的;它主要适用于编译代码(例如,在 Jenkins 或其他构建器中)。如果您使用 v1 结帐或设置深度,则此特定操作可能适用于一次性使用。

虽然这是一个 Git 问题,但主要是因为您编写了无用的 GitHub Action。请参阅 GitHub 上有关编写正确的 GitHub 操作的文章,了解如何编写不会出现这样的问题的操作。除了“不要使用原始哈希 ID”和“了解浅克隆”以及该操作的“深度”参数之外,这里没什么可说的checkout@v2


1像往常一样插入G&S HMS-Pinafore例程。