Cahcn的资料库
Other 3 分钟阅读

Hugo一键打包并上传GitHub

分享一个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,而你的脚本并没有成功覆盖这个配置。

Cahcn
Cahcn
Cahcn的资料库
分类
Other