Skip to main content

在其他服务器初始化仓库

需要在每台服务器执行以下操作​(以 192.168.1.101 为例):

​1、创建网站目录和裸仓库

mkdir -p /www/wwwroot/xiaoshuo.com
mkdir -p /git/xiaoshuo.git
cd /git/xiaoshuo.git
git init --bare

2、配置工作目录钩子

cat > hooks/post-receive <<'EOF'
#!/bin/bash
TARGET="代码的目录"
GIT_DIR="/git/git仓库的目录.git"
BRANCH="master"

while read oldrev newrev ref
do
  # 仅处理 master 分支更新
  if [[ $ref =~ .*/$BRANCH ]];
  then
    echo "正在更新工作目录: $TARGET"
    git --work-tree="$TARGET" --git-dir="$GIT_DIR" checkout -f "$BRANCH"
    echo "更新完成!"
    
    # 修复权限 (根据实际情况)
    chown -R www-data:www-data "$TARGET"
    find "$TARGET" -type d -exec chmod 755 {} \;
  fi
done
EOF

3、设置权限

chmod +x hooks/post-receive
chown -R www-data:www-data /git/git仓库的目录.git
chown -R www-data:www-data 代码的目录

注意:这是示例,权限用户自行设置就可以。 如果需要输入密码,需要在主从服务器设置:

# 执行以下命令将仓库添加到安全目录
git config --global --add safe.directory /git/git仓库的目录.git