1158 字
6 分钟
本地git服务器搭建

我的博客丢在自己的vps服务器上但是每次构建完还要手动上传觉得麻烦,就打算尝试配置个git后期直接push然后利用钩子自动构建发布。

PS:捣鼓的时候发现,我vps内存只有1G这完全导致我的钩子在运行构建就会出现内存溢出的报错,然后现在只能改进push目标,我本地构建完直接上传dist构建好的内容,然后用钩子粘贴到网页的存放路径。。。。

服务端Ubuntu20.04#

1、安装git服务#

Terminal window
$ apt install -y git

2、创建git用户并创建密码#

Terminal window
$ adduser git
$ passwd git

3、创建Git仓库#

Terminal window
$ mkdir -p /home/git/blog.git
$ cd /home/git/blog.git
$ git init --bare
$ chown -R git:git /home/git/blog.git
配置Nginx服务用来测试,后续无问题切换到对应的路径#
Terminal window
$ apt install -y nginx
$ systemctl start nginx
$ chmod -R 775 /var/www/html/
$ chown -R git:git /var/www/html/

4、配置Git钩子#

$ cd /home/git/blog.git/hooks
$ cat > post-receive << 'EOF'
#!/bin/bash
TEMP_DIR="/tmp/blog_deploy_$(date +%s)"
PROD_DIR="/var/www/html/"
GIT_REPO="$HOME/blog.git"
error_exit() {
    echo "❌ $1"
    [ -d "$TEMP_DIR" ] && rm -rf "$TEMP_DIR"
    exit 1
}
echo "🚀 开始部署"
mkdir -p "$TEMP_DIR" || error_exit "创建临时目录失败"
cd "$TEMP_DIR" || error_exit "进入目录失败"
git --work-tree="$TEMP_DIR" --git-dir="$GIT_REPO" checkout -f || error_exit "检出代码失败"
[ ! -d "dist" ] && error_exit "未找到 dist 目录,请本地构建后推送"
echo "部署到生产目录..."
mkdir -p "$PROD_DIR"
rm -rf "$PROD_DIR"/*
cp -r dist/* "$PROD_DIR/" || error_exit "文件复制失败"
rm -rf "$TEMP_DIR"
echo "✅ 部署成功"
echo "📁 目录: $PROD_DIR"
exit 0
EOF
$ chmod +x post-receive
$ chown git:git post-receive

客户端#

1、进入博客项目检查是否已存在git仓库#

Terminal window
$ git status

2、没有初始化,先初始化#

Terminal window
$ git init

3、添加服务端仓库#

Terminal window
$ git remote add vps git@服务器IP地址:/home/git/blog.git

4、将本地代码推送到服务端#

Terminal window
$ git add .
$ git commit -m "初始化博客"
# 一般情况分支要么是master要么是main
$ git push vps master

5、(可选)设置免密Push#

  1. 打开 PowerShell 或 Git Bash
  2. 生成 SSH 密钥(如果还没有)
Terminal window
$ ssh-keygen -t ed25519 -C "your_email@example.com"
  1. 查看生成的密钥(id_ed25519.pub),路径:C:\Users\User.ssh
  2. 复制密钥内容
  3. 在VPS中,进入git用户
Terminal window
$ mkdir -p ~/.ssh
$ echo "粘贴你复制的公钥内容" >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
  1. 可锁定git账户的密码
Terminal window
# 锁定 git 用户的密码,使其无法使用密码登录
sudo passwd -l git
# 验证用户状态
sudo passwd -S git
# 应该显示 "L" 或 "LK",表示密码被锁定

可能遇到的问题#

1.切换远程仓库地址#
Terminal window
$ git remote set-url vps git@新服务器IP地址:/home/git/blog.git
2.如果触发报错二次上传没触发钩子解决办法#
Terminal window
$ git add .
$ git commit -m "fix: 触发重新部署"
$ git push vps master
3.手动测试钩子流程如下#

先push仓库然后回到服务端

Terminal window
$ su - git
$ cd /home/git/blog.git
$ ./hooks/post-receive

Git 基础使用手册#

一、基础操作#

1.1 基本配置#

# 设置用户名
git config --global user.name "你的姓名"
# 设置邮箱
git config --global user.email "你的邮箱"
# 查看配置
git config --list

1.2 创建仓库#

# 初始化新仓库
git init
# 克隆现有仓库
git clone <仓库URL>

1.3 常用命令#

# 查看状态
git status
# 添加文件到暂存区
git add 文件名
git add . # 添加所有文件
git add *.txt # 添加所有txt文件
# 提交更改
git commit -m "提交说明"
# 查看提交历史
git log
git log --oneline # 简洁版
git log --graph # 图形化显示
# 推送到远程仓库
git push origin 分支名
git push # 如果已设置上游分支
# 从远程拉取更新
git pull
git pull origin 分支名

二、分支管理#

# 查看分支
git branch # 本地分支
git branch -a # 所有分支(包括远程)
# 创建分支
git branch 分支名
# 切换分支
git checkout 分支名
git checkout -b 分支名 # 创建并切换
# 合并分支
git checkout main
git merge 分支名
# 删除分支
git branch -d 分支名 # 安全删除
git branch -D 分支名 # 强制删除

三、.gitignore文件#

创建.gitignore文件来忽略不需要版本控制的文件:

# 编译文件
*.class
*.exe
*.dll
# 依赖目录
node_modules/
target/
# 编辑器文件
.vscode/
.idea/
*.swp
# 系统文件
.DS_Store
Thumbs.db
# 日志文件
*.log

四、常用命令速查表#

命令说明
git init初始化仓库
git clone <url>克隆仓库
git add <file>添加文件到暂存区
git commit -m "msg"提交更改
git push推送到远程
git pull从远程拉取
git status查看状态
git log查看历史
git branch分支管理
git checkout切换分支
git merge合并分支
git diff查看差异
git remote -v查看远程仓库
本地git服务器搭建
https://blog.xeu.asia/posts/技术折腾/本地git服务器搭建和静态博客联动/
作者
Xeu
发布于
2026-01-13
许可协议
CC BY-NC-SA 4.0