在 windows 下一切正常,发布到 github 不正常。
前提
我是直接将 hexo g
生成的 public 目录提交至 github 的,没有使用集成工具。
现象
在 windows 下,对标签、分类的修改,如果仅限于字母的大小写:没有增加和减少字母,只是改变了某一个或多个字母的大小写,就会出现这样的情况:
- 在 windows 下
hexo s
预览,标签和分类均正常。 - 发布到 github 之后,就不正常了,显示 404,到 tabs 和 categories 目录下去看,发现还是之前的大小写。
- 也就是说,对标签、分类的仅限于大小写的修改,不会同步至 github。
- 而在 windows 下,tags 和 categories 目录下的文件夹的大小写是被同步修改了的。
原因分析
- 应该是 windows 对字母不区分大小写,表面上看是改过的大小写,实际上 windows 记录的是之前的名称。不光是 git 提交到 linux 有这样的问题,svn 提交到 linux 也有同样的问题。
- 修改文件名称也是类似的。
解决
知道原因就好办了。这里举例说明,我之前有一个 tag 和 category,名称为 Java,现在我需要将其改为 java。在文章中是这样设置的:1
2tags: [Java]
categories: [Java]
- 直接到
public/tags
和public/categories
下,将 Java 目录删除并 commit 和 push。 修改为新名称: java
1
2tags: [java]
categories: [java]如果在执行第1步之前,已经修改成新名称,并且已经执行
hexo g
,那么,public/tags
和public/categories
下对应的目录将会是 java,将其删除后,commit 和 push。- 执行
hexo g
,再次 commit 和 push。
提交最新修改至 github,经验
在 public 目录下创建后缀为 sh 的脚本文件
deployDirectly.sh
,文件内容如下:1
2
3
4
5
6
7git pull # 如果每次都是在同一台电脑上操作,则不需要 git pull。
cd ../
hexo g
cd ./public
git add .
git commit -m 'update blog'
git push需要提交修改时:
- 在 windows 下,直接双击
deployDirectly.sh
,会调用 Git Bash 来执行,类似 linux 下的终端。- Git Bash,需要安装工具 git for windows
- 如果在 linux 或者 MacOS 下:
- 首次运行需要先赋予可执行权限:切换到 public 目录,执行
chmod +x deployDirectly.sh
- 然后,在 public 目录,执行:
./deployDirectly.sh
。 - 注意:MacOS 下需要在命令前加
sudo
以获取管理员权限。
- 首次运行需要先赋予可执行权限:切换到 public 目录,执行
- 在 windows 下,直接双击