我不太擅长使用 github,我最常使用的是 git push 和 git pull,所以我遇到了这个错误,并且不知道如何修复它
这是错误
Run FORBIDDEN_FILES=("appsettings.json" "program.cs")
FORBIDDEN_FILES=("appsettings.json" "program.cs")
for FILE in "${FORBIDDEN_FILES[@]}"; do
echo "Checking $FILE"
if git diff --name-only origin/dev_branch..0a7488a784a893ab515dbd8853a32009d3f0d83d | grep -q "^$FILE$"; then
echo "Error: You are trying to merge changes to a forbidden file: $FILE"
exit 1
fi
done
shell: /usr/bin/bash -e {0}
Checking appsettings.json
fatal: ambiguous argument 'origin/dev_branch..0a7488a784a893ab515dbd8853a32009d3f0d83d': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Checking program.cs
fatal: ambiguous argument 'origin/dev_branch..0a7488a784a893ab515dbd8853a32009d3f0d83d': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
这是 github 操作代码
name: Check Forbidden Files
on: pull_request
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Check for forbidden file changes
run: |
FORBIDDEN_FILES=("appsettings.json" "program.cs")
for FILE in "${FORBIDDEN_FILES[@]}"; do
echo "Checking $FILE"
if git diff --name-only origin/${{ github.base_ref }}..${{ github.sha }} | grep -q "^$FILE$"; then
echo "Error: You are trying to merge changes to a forbidden file: $FILE"
exit 1
fi
done
最疯狂的部分是我有另一个几乎相同的 API,具有相同的 github 操作,但它从未遇到此错误。到目前为止,我已经尝试孤立我正在合并的分支,甚至尝试孤立并恢复主分支。然后我删除了整个存储库并重新提交本地文件以重新创建它。有什么建议吗?
尝试修改您指定要在 GitHub Actions 工作流程中进行比较的 Git 修订范围的行。您可以使用以下命令,而不是使用 origin/${{ github.base_ref }}..${{ github.sha }}:
- name: Check for forbidden file changes
run: |
FORBIDDEN_FILES=("appsettings.json" "program.cs")
for FILE in "${FORBIDDEN_FILES[@]}"; do
echo "Checking $FILE"
if git diff --name-only ${{ github.base_ref }}..${{ github.sha }} | grep -q "^$FILE$"; then
echo "Error: You are trying to merge changes to a forbidden file: $FILE"
exit 1
fi
done