GitHub Pull Reques 时 Release 文件缺失问题解决方案 📦

问题背景 🤔

在提交 GitHub Pull Request 时,GitHub 提示最新的 Release 缺少 main.jsmanifest.json 文件。尽管这些文件在代码中存在,但它们并没有作为 Release 附件上传到 GitHub。这个问题通常发生在用户没有手动将文件上传到 Release 页面。

问题描述 ⚠️

当用户创建一个新的 Release 版本时,系统会自动检查该版本的文件内容。如果文件没有正确上传到 Release 页面,会出现以下问题:

  • 缺少文件: main.jsmanifest.json
  • 错误提示: “Your latest Release is missing the main.js file.” 和 “Your latest Release is missing the manifest.json file.”

问题分析 🔍

GitHub Release 只会将附加文件(Assets)包含在 Release 页面中,文件需要手动上传。若忘记手动上传,尽管这些文件已存在于代码中,它们并不会自动出现在 Release 页面上。


解决步骤 🛠️

1. 检查 Release 页面

首先,检查当前 GitHub Release 页面,确保 main.jsmanifest.json 是否已作为附件上传。

  1. 进入 GitHub 仓库的 Releases 页面。
  2. 查看最新的 Release 版本(如 1.0.0)。
  3. 在 Release 页面中查看 Assets 部分,确认 main.jsmanifest.json 文件是否存在。

2. 删除现有 Release 并重新上传文件

如果确认缺少附件文件,可以按照以下步骤重新上传:

  1. 删除当前 Release 和对应的 Tag

    • 进入 GitHub Release 页面,删除已有的 1.0.0 Release。

    • 在命令行中删除本地和远程的 1.0.0 tag:

      git tag -d 1.0.0  # 删除本地 tag
      git push origin --delete 1.0.0  # 删除远程 tag
      
  2. 重新创建 Release

    • 在命令行中为项目创建新的 1.0.0 tag:

      git tag -a 1.0.0 -m "Release version 1.0.0"
      git push origin 1.0.0  # 推送新 tag
      
    • 进入 GitHub Release 页面,点击 Draft a new release(创建新发布)。

    • Tag version 字段中选择 1.0.0,或者手动输入。

    • Assets 部分,点击 Attach binaries by dropping them hereBrowse files,手动上传 main.jsmanifest.json 文件。

    • 完成后点击 Publish release 以发布 Release。

3. 确认 manifest.json 文件内容正确

确保 manifest.json 文件中的 version 字段与当前发布的版本号一致。例如:

{
  "version": "1.0.0",
  "name": "Markdown Highlight HTML",
  "description": "A plugin for Obsidian"
}

如果文件中的版本号不一致,修改后提交更新:

git add manifest.json
git commit -m "Update manifest version"
git push origin main

4. 确保文件已提交至 Git 仓库

确认 main.jsmanifest.json 文件是否已被提交到 Git 仓库。如果文件未被 Git 跟踪,无法上传到 Release:

  1. 检查文件是否已经添加到 Git 仓库:

    git ls-files | grep "main.js\|manifest.json"
    
  2. 如果文件没有被添加,使用以下命令提交:

    git add main.js manifest.json
    git commit -m "Add missing main.js and manifest.json"
    git push origin main
    

常见问题与解决方案 ❓

Q1: 如果 Release 页面没有显示文件,怎么办?

  • 确认文件已正确上传至 Assets 区域。
  • 确认文件名与代码中的文件名完全一致(GitHub 对文件名大小写敏感)。

Q2: 是否每次发布都需要手动上传文件?

  • 如果没有自动化发布流程(如 CI/CD),则每次发布时需要手动上传文件。
  • 对于频繁发布的项目,可以设置 CI/CD 工具(如 GitHub Actions)来自动上传 Release 文件。

Q3: 为什么 GitHub Release 页面不自动包含文件?

  • GitHub Release 页面仅支持附件上传,需要手动上传文件。GitHub 不会自动将仓库中的文件附加到 Release 上。

总结 📌

创建 GitHub Release 时,确保所有需要的文件(如 main.jsmanifest.json)已正确上传到 Release 页面。这个过程需要用户手动将文件添加到 Release 的 Assets 部分。通过遵循上述步骤,用户可以确保 Release 正确发布,且包含所有必要的文件。