1.创建一个文件夹
2.将写好的项目文件全部复制进去
3.打开这个文件夹,右键Git Bash Here
4.输入命令:git init
5.修改分支:git branch -M main
6.输入命令:git add .
7.输入命令:git commit -m "xxxxxxx"
8.输入命令:git remote add origin git@github.com:Tajang-ctf/仓库名.git
9.输入命令 :git push -u origin main
2025/02/06更新
我部署了Hugo博客,主题自己写的,我想在站点目录下执行git push
推送public目录内文件到远程仓库,但怎么设置都不行,.gitignore写了也不行,于是写了下面这个脚本:
1@echo off
2echo 进入D:\Blog目录
3cd /d "D:\Blog"
4echo 开始构建站点
5hugo --gc --minify
6echo 进入D:\Blog\public目录
7cd /d "D:\Blog\public"
8echo 添加所有文件
9git add .
10echo 提交代码
11git -c i18n.commitEncoding=utf-8 -c i18n.logOutputEncoding=utf-8 commit -m "推送Hugo博客"
12echo 推送到Github仓库
13git push origin main
14echo 推送完成!
15pause
16@REM Blog是博客站点根目录,不需要推送,只需要推送public内文件夹,本来想着写,gitignore忽略所有文件,但排除public内文件。但是一直不成功,所以写这个脚本。
17@REM public内有git配置,分支是main,直接推送即可
本地git init
时默认为master分支,虽然可以使用master:main
推送,但遇到各种分支冲突,只能--force
,所以还是把本地的分支改成main吧:git branch -m main
2025/08/22更新
终端显示“推送Hugo博客”,但是commit消息是乱码。因为bat一般与windows终端的编码一致的,都是GBK,当然终端也能正常显示ANSI的bat,但是git commit -m "xxxx"
里面的消息会被git当GBK读,但是git的显示是按UTF-8显示的,所以会乱码,这里使用
git -c i18n.commitEncoding=utf-8 -c i18n.logOutputEncoding=utf-8
就是临时设置它的编码和输出编码,这样终端里显示正常,github的commit信息也正常。上面代码已修改。
2025/08/26更新
某文章被要求下架,我删除了居然还能访问,然后发现Github的仓库里仍然有那个文章。然后一次次测试Hugo的draft草稿功能,还有删除后的渲染功能才发现:
Hugo 的草稿一般是不渲染的,但是你只要渲染过,比如hugo server -D
,就会存在public/post中。就算重新生成站点或者删除草稿,渲染后的文件也不会被删除,随后被git推送到仓库。虽然页面不显示,但访问 slug 对应链接,仍然能看到,所以要删除文章,就要删除 public/post 里面的对应的文章,但是 git 时候,同步新增和修改,不同步删除。
上面这两个原因导致我无论是改成草稿,还是删除文章,访问链接都能访问文章。
删除的内容仍然保存在github中。所以我去仓库一看,都能找到去年的博客测试图片。不过我的GitHub仓库是私密的,然后被Vercel同步的,数据不会被打包。只不过被删除的资源不显示,但能访问。这其实是本地仓库新的,但是远程仓库累加很多内容。
git add -A
,可以同步新增、修改、删除,但是hugo的hugo --gc --minify
不会删已渲染过的草稿,所以草稿仍被推送。
所以我这里先命令清空public,清洗一次。进去再git add -A。但是rmdir /s /q public
导致我的.git
文件夹没了,使public变成纯静态文件夹了。。。
这里重新git init、remote之类。然后在hugo --gc --minify
之前加入
这样不删除隐藏目录,也就是.git
,可以看到上传了很多东西。仓库全部更新了,但是也上传了不少东西。每次都删除public意义不大,而且上传耗时。下架文章,只要删除post(不是posts)
文件夹就行,如果怕不小心写过错的tag和Category,那就每次删除标签、分类、文章三个文件夹。
代码用
1for %%d in (post categories tags) do rmdir /s /q "D:\Blog\public\%%d"
这样就算我渲染过草稿,也会在脚本里清空文件夹,重新生成内容。
注意,bat 脚本里是 %%d
,终端这样操作就要写 %d
完整博客推送代码:
1@echo off
2echo 进入D:\Blog目录
3cd /d "D:\Blog"
4
5@REM echo 清空 public 目录内容(保留 .git)
6@REM del /q public\*
7@REM for /d %%x in (public\*) do rmdir /s /q "%%x"
8
9echo 删除 post、categories、tags 文件夹
10for %%d in (post categories tags) do rmdir /s /q "D:\Blog\public\%%d"
11@REM bat脚本里写 %%d ,终端里要写 %d
12
13echo 开始构建站点
14hugo --gc --minify
15
16echo 进入D:\Blog\public目录
17cd /d "D:\Blog\public"
18
19echo 添加所有文件
20git add -A
21
22echo 提交代码
23git -c i18n.commitEncoding=utf-8 -c i18n.logOutputEncoding=utf-8 commit -m "推送Hugo博客"
24
25echo 推送到Github仓库
26git push --force origin main
27
28echo 推送完成!
29pause
30@REM Blog是博客站点根目录,不需要推送,只需要推送public内文件夹,本来想着写,gitignore忽略所有文件,但排除public内文件。但是一直不成功,所以写这个脚本。
31@REM public内有git配置,分支是main,直接推送即可
32@REM 详情参考:https://h4cker.zip/post/39697d/
@REM
是注释的意思