使用GithubActions自动部署Hexo
使用GithubActions自动部署Hexo
此教程来自:https://blog.anheyu.com/posts/asdx.html
常量名 | 常量释义 |
---|---|
[Blogroot] | 本地存放博客源码的文件夹路径 |
[SourceRepo] | 存放博客源码的私有仓库名 |
[SiteBlogRepo] | 存放编译好的博客页面的公有仓库名 Site 指站点,教程中会替换成 Github、Gitee、Coding |
[SiteUsername] | 用户名 Site 指站点,教程中会替换成 Github、Gitee、Coding |
[SiteToken] | 申请到的令牌码 Site 指站点,教程中会替换成 Github、Gitee、Coding |
[GithubEmail] | 与 github 绑定的主邮箱,建议使用 Gmail |
[TokenUser] | Coding 配置特有的令牌用户名 |
1.获取Token
访问 Github头像(右上角)-> Settings ->Developer Settings ->Personal access tokens->generate new token,创建的 Token 名称随意,但必须勾选 repo 项 和 workflows 项。
注意:token 只会显示一次,之后将无法查看,所以务必记录下了 Token。
2.创建存放Hexo源码的私有仓库
存放Hexo源码的私有仓库[^1]
3.配置 Github Action
1.在 D:\Hexo-Blog
新建文件.github/workflows/autodeploy.yml
1 | # 当有改动推送到master分支时,启动Action |
2.在仓库添加环境变量
之后需要自己到仓库的 Settings->Secrets->actions 下添加环境变量,变量名参考脚本中出现的,依次添加。
脚本中必要的变量为GITHUBUSERNAME
、GITHUBEMAIL
、GITHUBTOKEN
,因此添加这三条变量。
3.重新设置远程仓库和分支
1.打开 D:\Hexo-Blog\.gitignore
(也是隐藏文件),输入以下内容:
1 | .DS_Store |
如果不是butterfly
主题,记得替换最后一行内容为你自己当前使用的主题。
2.在博客根目录D:\Hexo-Blog
下启动终端,使用 git 指令重设仓库地址。这样在新建仓库,我们仍旧可以保留珍贵的 commit history,便于版本回滚。
1 | git remote rm origin # 删除原有仓库链接 |
4.可能遇到的问题
4.1因为 butterfly 主题文件夹下的.git 文件夹的存在,那么主题文件夹会被识别子项目。
从而无法被上传到源码仓库。若是遇到添加屏蔽项,但是还是无法正常上传主题文件夹的情况。请先将本地源码中的 themes 文件夹移动到别的目录下。然后 commit 一次。接着将 themes 文件夹移动回来,再 commit 一次。
要是还不行,那就删了 butterfly 主题文件夹下的.git 文件夹,然后再重复上述的 commit 操作。
4.2 ! [rejected] main -> main (fetch first)
1 | ! [rejected] main -> main (fetch first) |
这意味着你的本地 main
分支与远程 main
分支之间存在差异,远程分支上有你本地没有的更改。Git 阻止了推送,以防止你覆盖远程分支上的更改。
要解决这个问题,你可以按照提示进行操作:
方法 1:使用 git pull
合并远程更改
你可以先将远程分支上的更改拉取到本地,然后解决任何可能的冲突,再进行推送。
1 | git pull origin main |
这会将远程 main
分支的更改合并到你的本地 main
分支。如果合并过程中出现冲突,你需要手动解决这些冲突,然后再次提交更改。
方法 2:使用 git fetch
和 git merge
如果你想要更细粒度地控制合并过程,可以使用 git fetch
和 git merge
:
1 | git fetch origin |
这同样会将远程 main
分支的更改合并到你的本地 main
分支。解决任何冲突后,再进行推送。
方法 3:强制推送(不推荐)
如果你确定你的本地更改是正确的,并且想要覆盖远程分支上的更改,可以使用强制推送。但请注意,这会丢失远程分支上的所有更改,因此请谨慎使用:
1 | git push -f origin main |
当你看到这样的提示时,Git 正在要求你输入一个提交信息来解释为什么需要合并远程分支 origin/main
。这通常发生在执行 git pull
或 git merge
命令后,Git 需要你确认合并的原因。
如何输入提交信息
-
打开合并信息文件:
- Git 会自动打开一个文本编辑器(通常是 Vim 或 Nano),让你输入合并信息。
-
输入合并信息:
-
在编辑器中,删除或修改以
#
开头的注释行。 -
在第一行输入一个简短的合并信息,例如:
1
Merge remote-tracking branch 'origin/main' to resolve conflicts
-
在接下来的几行中,可以添加更详细的解释,例如:
1
This merge is necessary to integrate the latest changes from the remote repository and resolve any conflicts that arose during development.
-
-
保存并退出编辑器:
- 如果你使用的是 Vim,按
Esc
键,输入:wq
,然后按Enter
键保存并退出。 - 如果你使用的是 Nano,按
Ctrl+X
,然后按Y
确认保存更改,最后按Enter
键退出。
- 如果你使用的是 Vim,按
示例合并信息
1 | Merge remote-tracking branch 'origin/main' to resolve conflicts |
注意事项
- 确保信息清晰:合并信息应该清晰地说明为什么需要合并,特别是当合并涉及到解决冲突时。
- 避免空提交信息:如果提交信息为空,Git 会终止合并过程,你需要重新输入信息。
通过输入合适的合并信息,你可以帮助团队成员更好地理解代码历史和合并的原因。