分享一个Hugo一键打包并上传GitHub的方法,前提是你之前上传过GitHub仓库。
采用Windows支持的sh可执行文件,在根目录新建一个hugo.sh文件,里面放上一些命令。
1hugo
2
3# cd public
4
5time=$(date "+%Y-%m-%d %H:%M:%S")
6echo $time
7
8git add .
9git commit -m "自动执行构建脚本 🎓$time"
10git push
11exit
可以在文件夹双击运行hugo.sh,也可以在终端输入命令。
1.\hugo.sh
省去了我输入繁琐的Git上传指令,并且自动生成当前系统时间作为commit。
其他
这里我上传的是整体的hugo目录,如果你只想上传生成的/public,在中间加入cd public。
参考: 子舒的博客
(2026年3月22日更新)
换新电脑之后一直没有更新过博客内容,此前在旧电脑中无法提交,今天使用Windows 11自带的终端,运行.\hugo.sh,发现可以正常提交了。
但是存在一个严重的问题,提交到了另一个仓库,旧电脑做数据迁移时并没有改动任何内容,出现该问题原因不明。
询问ChatGPT 5.3,给出的解决方案如下:
你的脚本本身语法没问题,但出现“推送到了test仓库而不是hugo仓库”,这几乎可以确定是Git仓库状态或远程配置的问题,而不是Hugo或脚本的问题,下面我们来逐条排查。
最可能的原因(请优先检查)是public目录本身已经是一个Git仓库了。
如果你之前在public/目录里已经初始化过Git,并且它的远程地址指向了test仓库,那么你脚本里的git init是不会覆盖已有仓库配置的,而后续的git remote add origin ...这条命令会执行失败(你可能没有注意到报错)。
结果就是,脚本仍然使用旧的origin地址(指向test仓库),所以git push自然就推过去了。
你可以进入public目录手动验证一下,执行:
1cd public
2git remote -v
如果看到类似这样的输出:
1origin https://github.com/name/test.git (fetch)
2origin https://github.com/name/test.git (push)
那就确认是这个问题了。
解决方案有以下几种:
方法一:强制修改远程仓库(推荐)
在脚本里把git remote add origin https://github.com/name/hugo.git这一行,改成:
1git remote set-url origin https://github.com/name/hugo.git
这样无论origin是否存在,都会改成正确的地址。
方法二:先删除再添加
你可以先删除现有的origin,再添加新的:
1git remote remove origin
2git remote add origin https://github.com/name/hugo.git
方法三:彻底重建(最干净)
如果你不需要public/.git里的提交历史,最直接的办法是:
1rm -rf public/.git
然后重新运行你的脚本即可。
另外,你的脚本可能还隐藏了两个问题:
第一,脚本没有在遇到错误时停止。如果Git报错,脚本会继续执行,从而“悄悄”使用旧的仓库配置。建议在脚本开头加上set -e,这样一旦git remote add之类的命令失败,脚本就会立刻停止,避免产生意外的结果。
第二,远程仓库重复添加时会报错。如果origin已经存在,执行git remote add origin ...会报“remote origin already exists.”的错误。但你的脚本可能忽略了这条错误信息继续执行,导致了误推。
总结一下,你推到test仓库的根本原因,是public/.git里的origin早就指向了test,而你的脚本并没有成功覆盖这个配置。