git remote add
关联服务器仓库,执行 git push
上传代码,需确保服务器端配置好Git仓库及权限,建议设置SSH密钥认证实现免密操作,也可通过post-receive钩子自动部署到指定目录。
本地开发环境
git config --global user.name "YourName"
git config --global user.email "your@email.com"
服务器环境配置
sudo apt update && sudo apt install git openssh-server -y
sudo adduser deployer --shell /bin/bash
生成SSH密钥对
ssh-keygen -t ed25519 -C "deploy_key" -f ~/.ssh/server_deploy_key
上传公钥到服务器
ssh-copy-id -i ~/.ssh/server_deploy_key.pub deployer@your_server_ip
验证连接测试
ssh -T git@github.com # 验证Git平台连接 ssh deployer@your_server_ip # 验证服务器连接
创建裸仓库
mkdir /var/repo/project.git && cd /var/repo/project.git git init --bare
配置钩子脚本
创建post-receive文件:
touch hooks/post-receive chmod +x hooks/post-receive
#!/bin/bash TARGET="/var/www/project" GIT_DIR="/var/repo/project.git" BRANCH="main" while read oldrev newrev ref do if [[ $ref = refs/heads/$BRANCH ]]; then echo "Deploying $BRANCH to $TARGET..." git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f # 添加部署后操作 cd $TARGET npm install && npm run build fi done
初始化本地仓库
cd local_project git init git remote add origin deployer@your_server_ip:/var/repo/project.git
首次推送代码
git add . git commit -m "Initial deployment" git push --set-upstream origin main
后续更新流程
git add . git commit -m "Update features" git push origin main
分支管理方案
main
分支staging
分支dev
分支自动回滚机制
# 查看提交历史 git log --oneline # 回退到指定版本 git revert <commit-hash>
冲突解决方案
git pull --rebase
git mergetool
权限控制
sudo chown -R deployer:www-data /var/www/project sudo chmod -R 750 /var/www/project
日志监控
tail -f /var/log/nginx/access.log # Web访问日志 journalctl -u sshd --since "5 min ago" # SSH连接日志
性能优化
git config --global http.postBuffer 524288000
git clone --depth 1 https://github.com/user/repo.git
权限拒绝错误
检查SSH密钥权限是否为600模式:chmod 600 ~/.ssh/server_deploy_key
钩子脚本未执行
确保脚本具有可执行权限且换行符为LF格式:dos2unix hooks/post-receive
文件所有权冲突
使用git reset --hard HEAD
清理工作区