如何避免将Fork仓库的GitHub workflow文件纳入向主仓库的PR
避免自定义工作流文件进入主仓库PR的实用方案
1. 单独分支存放自定义工作流
- 专门新建一个分支(比如命名为
personal-workflows)来存放你的私有工作流文件,日常开发功能的分支完全不涉及这些文件。提交PR时仅推送功能分支,这个私有分支永远不向主仓库发起PR。 - 如果你需要在自己的fork仓库里同时使用功能代码和私有工作流,可以用
git cherry-pick将功能分支的提交挑选到私有分支,或者手动合并时跳过工作流文件的变更。
2. 让Git暂时忽略已追踪的工作流文件
- 如果已经把工作流文件提交到了要提PR的分支,执行
git update-index --assume-unchanged .github/workflows/你的自定义文件.yml,让Git在本地暂时忽略这个文件的变更,后续提交PR时就不会将它包含进去。 - 注意:这个设置仅在当前本地仓库生效,换电脑或重新克隆仓库后需要重新执行。取消忽略的话,执行
git update-index --no-assume-unchanged .github/workflows/你的自定义文件.yml即可。
3. 从PR分支中移除工作流文件
- 要是已经把文件推送到了远程分支,先在本地撤销该文件的提交:
- 如果是最后一次提交包含这个文件,执行
git reset HEAD^ .github/workflows/你的自定义文件.yml,接着用git checkout .github/workflows/你的自定义文件.yml将文件保留在本地(避免丢失),之后重新提交其他文件并推送到远程分支。 - 更新远程分支时需要执行
git push origin 你的分支名 --force(多人协作的分支请谨慎使用强制推送)。
- 如果是最后一次提交包含这个文件,执行
- 提交PR后,也可以在GitHub的PR页面「Files changed」标签中确认,若仍有工作流文件,按上述步骤修正后重新推送即可。
4. 给工作流添加仓库专属触发条件
- 不想移动文件位置的话,直接修改你的工作流YAML文件,添加触发条件让它仅在你的fork仓库运行:
就算不小心将这个工作流合并到主仓库,它也会因为仓库名不匹配而永远不会触发,不会干扰主仓库的Actions执行。on: push: branches: - main # 仅在你的fork仓库执行该工作流 if: github.repository == '你的用户名/目标仓库名'
内容的提问来源于stack exchange,提问作者drmrbrewer
相关产品推荐
相关产品推荐

