Bash Github操作错误;无法看到git与Master的差异

Bash Github操作错误;无法看到git与Master的差异,bash,github-actions,linter,Bash,Github Actions,Linter,我正在试图找到一种方法,只删除在当前分支上已更改的标记文件。我编写了一个bash脚本,它在本地运行良好,但在Github操作中中断 预期成果: 在GitHub操作中,仅在拉取请求时在分支上更改的lint标记文件 #!/bin/bash files=`git diff --name-only master` for x in $files; do if [ ${x: -3} == ".md" ] then node_modules/.bin/markdownlint

我正在试图找到一种方法,只删除在当前分支上已更改的标记文件。我编写了一个bash脚本,它在本地运行良好,但在Github操作中中断

预期成果: 在GitHub操作中,仅在拉取请求时在分支上更改的lint标记文件

#!/bin/bash
files=`git diff --name-only master`
for x in $files;
do
    if [ ${x: -3} == ".md" ]
    then
        node_modules/.bin/markdownlint $x
    fi
done
我调用package.json中的脚本

"scripts": {
    "test": "bash mdlint.sh"
  }
然后,我调用GitHub操作工作流中的bash脚本:

name: CI

on: 
  pull_request:
    branches:
    - master

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - uses: actions/setup-node@master
    - name: lint all markdownfiles
      run: |
        npm install
        npm run test
这是GitHub操作中的错误:

  shell: /bin/bash -e {0}
npm WARN Gatsby_site No repository field.
npm WARN Gatsby_site No license field.

added 33 packages from 26 contributors and audited 43 packages in 0.952s
found 0 vulnerabilities


> @ test /home/runner/work/Gatsby_site/Gatsby_site
> bash mdlint.sh

fatal: ambiguous argument 'master': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
shell:/bin/bash-e{0}
npm WARN Gatsby_站点无存储库字段。
npm警告Gatsby_站点无许可证字段。
在0.952s中添加了来自26个贡献者的33个包,并审核了43个包
发现0个漏洞
>@test/home/runner/work/Gatsby_site/Gatsby_site
>bash mdlint.sh
致命:参数“master”不明确:未知修订或路径不在工作树中。
使用“---”将路径与修订分开,如下所示:
'吉特[…]-[…]'

有没有办法让GitHub操作只在当前分支上更改的文件上运行linter

我认为您可以通过将
master
origin master
关联来解决此问题,如下所示:

git fetch origin master:master
git diff --name-only master
      - uses: actions/checkout@master
        with:
          ref: ${{ github.head_ref }}
请注意,在:pull_request工作流上触发
的事件与分支无关,它们与合并提交SHA关联。所以
动作/checkout@v1
默认情况下,将签出由
GITHUB\u SHA
指定的合并提交,而不是正在合并到基中的分支。看

您可以覆盖此默认行为并签出合并到基础中的分支,如下所示:

git fetch origin master:master
git diff --name-only master
      - uses: actions/checkout@master
        with:
          ref: ${{ github.head_ref }}

我不确定这对于您的用例是否是必要的,但是在合并提交上运行
diff
时可能会产生意外的影响。

非常感谢@peterevans,这非常有效。我将bash脚本中的第一行更改为:
files=`(git-fetch-origin-master:master)&&(git-diff--name-only-master)
以及您在工作流文件中建议的更改。