今天解决了本地提交的问题,就是不再使用网页端提交代码,使用SSH密钥,自己也写了两个提交脚本,一个日常提交sub_soft.sh,一个强制重启提交sub_hard.sh,应对本地很仓库冲突的问题,保留本地,清楚仓库。

脚本格式如下: sub_soft.sh:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash

# 生成静态文件前清理旧数据(确保每次都是全新构建)
hugo --minify

cd public

# 添加所有文件到暂存区
git add .

# 检查是否有文件变更(避免空提交)
if git diff-index --quiet HEAD --; then
  echo "No changes to deploy."
  exit 0
fi

# 获取源码仓库信息(显式指定源码目录,避免跨文件系统问题)
SOURCE_REPO_DIR="/mnt/d/Hugo/Myblog/kevin"
COMMIT_HASH=$(git -C "$SOURCE_REPO_DIR" rev-parse --short HEAD)
BRANCH_NAME=$(git -C "$SOURCE_REPO_DIR" rev-parse --abbrev-ref HEAD)
REPO_NAME=$(basename "$SOURCE_REPO_DIR")
TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')

# 提交到部署仓库
git commit -m "Deploy: ${REPO_NAME}@${BRANCH_NAME}:${COMMIT_HASH} (${TIMESTAMP})"

# 推送
git push origin master

sub_hard.sh:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash

# 生成静态文件前清理旧数据(确保每次都是全新构建)
rm -rf public
hugo --minify

cd public

# 初始化或复用 Git 仓库
if [ -d ".git" ]; then
  echo "Reusing existing Git repository."
else
  git init
fi

# 配置 Git 用户信息(必填,否则提交失败)
git config user.email "xxxxxxxx"
git config user.name "xxxxxxxx"

# 添加所有文件到暂存区
git add .

# 检查是否有文件变更(避免空提交)
if git diff-index --quiet HEAD --; then
  echo "No changes to deploy."
  exit 0
fi

# 获取源码仓库信息(显式指定源码目录,避免跨文件系统问题)
SOURCE_REPO_DIR="/mnt/d/Hugo/Myblog/kevin"
COMMIT_HASH=$(git -C "$SOURCE_REPO_DIR" rev-parse --short HEAD)
BRANCH_NAME=$(git -C "$SOURCE_REPO_DIR" rev-parse --abbrev-ref HEAD)
REPO_NAME=$(basename "$SOURCE_REPO_DIR")
TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')

# 提交到部署仓库
git commit -m "Deploy: ${REPO_NAME}@${BRANCH_NAME}:${COMMIT_HASH} (${TIMESTAMP})"

# 强制推送到 GitHub Pages 分支
git remote rm origin 2>/dev/null || true
git remote add origin git@github.com:xxxxxxxx/xxxxxxxx.git
git push -f origin master

其中,第二个脚本是暴力重置,包含了一些本地的信息,所以用xxxxxxxx代替的,包括了本地用户名和邮箱,我都的GitHub账号和网站仓库名称。