宝塔面板因其使用方便、功能强大的特点,积累了海量的用户基础,尤其对于管理服务器和部署网站应用,通过快速部署和可视化界面,极大地降低了配置门槛。
我日常习惯将本地代码直接映射到宝塔面板的网站目录,修改代码后可以在浏览器上即时预览效果,调试响应极其迅速。同时通过预设的计划任务,每天凌晨自动将服务器上的代码自动推送到 Gitea 代码仓库。
诚然,这种「野路子」在专业开发者眼中并不符合规范流程,但对于个人开发者的小项目,它确实显著提升了本地开发的调试效率,同时为代码增添了一层可靠的备份保障。
本篇文章介绍了如何利用宝塔面板的计划任务,定时向你的 Gitea 仓库推送代码,为你的个人开发流程添加一份保险。
操作步骤
1、通过 SSH 访问服务器底层,输入以下代码安装 Git 。
yum install -y git
2、配置 Git 的全局用户信息。
# 配置全局 Git 信息
git config --global user.name "kobin"
git config --global user.email "chen@kobin.cn"
git config --global push.default simple
# 检查配置信息
git config --list
# 清除全局配置(仅用于备注,无需执行)
git config --global --unset user.name
git config --global --unset user.email
rm -f ~/.gitconfig
3、生成一个 SSH 密钥对。
ssh-keygen -t ed25519 -f ~/.ssh/git_key -N ""
chmod 600 ~/.ssh/git_key
chmod 644 ~/.ssh/git_key.pub
# 查看公钥文件内容
cat ~/.ssh/git_key.pub
4、登录 Gitea 控制台,点击右上角的头像,选择「设置」>「SSH / GPG 密钥」>「管理 SSH 密钥」>「增加密钥」,将公钥文件内容粘贴到文本区域,完成后点击「增加密钥」。

5、返回服务器,编辑 SSH 配置文件,并添加主机配置。
vi ~/.ssh/config
Host git.kobin.cn # 自定义别名
HostName 10.0.100.7 # Gitea 服务器 IP 地址
User git # 登录用户名,不可修改
Port 22 # SSH 端口号
IdentityFile ~/.ssh/git_key # 指定使用的私钥文件路径
IdentitiesOnly yes # 使用指定的密钥认证
6、测试 SSH 连接。
ssh -T git@git.kobin.cn
# 成功认证响应
Hi there, kobin! You've successfully authenticated with the key named ****, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.
7、登录宝塔面板,选择「计划任务」>「脚本库」>「自定义」,创建一个自定义脚本。

8、复制以下脚本内容,并修改本地路径和仓库地址,完成后点击保存,并尝试第一次推送。
#!/bin/bash
# 配置本地路径和仓库地址
REPO_DIR="/www/wwwroot/website"
REPO_URL="git@git.domain.com:username/repositories.git"
echo "=== Gitea 仓库同步脚本 ==="
echo "目录: $REPO_DIR"
echo "时间: $(date +'%Y-%m-%d %H:%M:%S')"
# 进入仓库目录
cd "$REPO_DIR" || {
echo "错误:无法进入目录 $REPO_DIR"
exit 1
}
# 判断是否存在Git仓库
if [ -d ".git" ]; then
echo "检测到Git仓库,准备执行日常更新"
# 1. 拉取最新更改
echo "→ 拉取远程更新"
git pull origin main --quiet 2> /dev/null || {
echo "注意: 当前是独立工作状态(无远程分支或无法连接)"
}
# 2. 检查是否有未提交的更改
if git diff-index --quiet HEAD --; then
echo "当前无更改需要提交"
echo "=== 同步完成(无任何变更) ==="
exit 0
fi
# 3. 显示变更摘要
echo "→ 检测到以下变更:"
git status --short
# 4. 添加所有更改
echo "→ 添加所有更改到暂存区"
git add .
git add -u
# 5. 创建提交
COMMIT_MSG="内容更新 $(date +'%Y-%m-%d %H:%M:%S')"
echo "→ 创建提交: \"$COMMIT_MSG\""
git commit -m "$COMMIT_MSG"
# 6. 推送到远程仓库
echo "→ 推送到远程仓库"
if git push origin main; then
echo "推送成功!"
# 获取最新提交ID
LATEST_COMMIT=$(git rev-parse --short HEAD)
echo "提交ID: $LATEST_COMMIT"
echo "仓库URL: ${REPO_URL/git@/https://}" | sed 's|:kobin/|/kobin/|'
else
echo "推送失败!"
exit 1
fi
echo "日常更新完成!"
else
echo "未检测到Git仓库,执行初始化"
# 清理和重新初始化仓库
echo "→ 初始化新仓库"
git init
# 自定义忽略规则
echo "→ 配置忽略规则"
cat << 'EOF' > .gitignore
*.ini
*.htaccess
*.log
*.env
*.bak
*.tmp
Thumbs.db
.DS_Store
/@eaDir/
EOF
echo -e "\n=== 当前忽略规则 ===\n"
cat .gitignore
echo -e "\n=================\n"
# 添加所有文件
echo "→ 添加所有文件到暂存区"
git add . > /dev/null
# 创建首次提交
echo "→ 创建初始提交"
git commit -m "初始提交 $(date +'%Y-%m-%d %H:%M')"
# 设置远程仓库
echo "→ 设置远程仓库"
git remote add origin "$REPO_URL"
# 创建并推送主分支
echo "→ 创建并推送主分支"
git branch -M main
git push -u -f origin main
echo "仓库初始化完成!"
fi
echo "=== 操作完成 ==="

9、推送成功后,如果需要添加计划任务,可以前往「计划任务」,将刚才的脚本内容添加到计划任务中,并设置执行周期。

本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。
利用宝塔面板实现 Gitea 代码自动推送
https://blog.kobin.cn/blog/system/s2/3341.html
利用宝塔面板实现 Gitea 代码自动推送
https://blog.kobin.cn/blog/system/s2/3341.html