【Git、Hexo】deploy github 檔名大小寫問題

【Git、Hexo】deploy github 檔名大小寫問題

本篇重點

  • hexo deploy 檔名大小寫不同,導致網頁404
  • git 忽略檔名大小寫的原因
  • 解決 hexo deploy github 檔名大小寫問題

hexo deploy github page 檔名大小寫不同,導致網頁404

有一次無意間發現網站中的某幾個頁面會404 error,但是在本地 hexo s 測試卻是正常的,重新 deploy 還是沒有修正這個問題,仔細比對檔案和網址後發現 github 上的檔名和網址路徑不同

github 上的檔名是大寫的 PHP

網址路徑是小寫的 php

造成錯誤的原因是剛開始設計的 tag 名稱是大寫,但後來修改為小寫命名,deploy 到 github 並沒有更新為小寫,導致 github page 404 錯誤,也就是說 git 並未追蹤檔名的大小寫。

健忘筆記

404 錯誤是 HTTP 的其中一種「標準回應訊息」(HTTP狀態碼),表示網頁不存在

git 忽略檔名大小寫的原因

git 預設是忽略追蹤檔名大小寫,所以檔名做大小寫變更時並不會記錄。原因是許多作業系統(例如 Windows 和 macOS)的檔案系統,檔名大小寫是不敏感的。
例如:建立 test 資料夾後,再建立 TEST 資料夾,系統會詢問是否要取代檔案,認為兩個檔案名稱是相同的

檔案系統忽略檔名大小寫

解決 hexo deploy github 檔名大小寫問題

修改檔名的當下,git 設定是忽略檔名大小寫的,因此之後的更新沒辦法改變 github 上的檔名,解決這個問題必須清空 github 上的檔案並且重新上傳。

1. 設定 git 追蹤檔名大小寫

執行 hexo d 的時候,會從 .deploy_git 資料夾將檔案更新至設定好的 github,所以需要修改 .deploy_git 的 git 設定,讓 git 追蹤檔名的大小寫,以便之後修改檔名能正確更新。

command
1
2
3
4
5
// 進入 .deploy_git 資料夾
cd .deploy_git

// 設定追蹤檔名大小寫
git config --local core.ignorecase false

2. 清空 github 上的檔案

command
1
2
3
4
5
6
7
8
// 移除當前目錄及其子目錄中的所有文件和文件夾,新增至暫存區
git rm -rf *

// 提交變更
git commit -m 'clean all file'

// 更新至 github
git push https://github.com/forgetfulengineer/forgetfulengineer.github.io.git HEAD:main

健忘筆記

git push https://github.com/forgetfulengineer/forgetfulengineer.github.io.git HEAD:main
  • https://github.com/forgetfulengineer/forgetfulengineer.github.io.git 為遠端名稱
  • HEAD 為當前所在的分支
  • main 為 github 上要更新的分支

意思是把當前所在的分支更新到遠端的 main 分支。遠端名稱可以透過 git config --local -l 查詢

3. hexo 重新生成檔案並佈署

command
1
2
3
4
5
6
7
8
// 回到 hexo 資料夾
cd ..

// 清除 hexo 生成的所有檔案
hexo clean

// 生成檔案並佈署
hexo d -g

結論

無意間發現的錯誤讓我更了解 git ,原來 git 預設是忽略追蹤檔名大小寫的。檔名修正更新後 php 標籤頁就恢復正常啦😁~

快回想看看你的 github page 有沒有曾經更改過檔名大小,如果有,可能也會遇到 404 的問題,趕快清空 github 上的檔案重新佈署吧!

延伸閱讀

作者

健忘工程師

發表於

2024-06-10

更新於

2024-06-10

許可協議


評論

複製完成