1,创建一个代码部署的无特权用户
useradd -m gituser
passwd gituser
2,新建一个目录作为要部署代码的根目录
chown gituser:gituser git
3,切换到部署代码的专用用户
su deployuser
4,创建git管理目录
cd /strage/git/
git init
5 ,仓库配置
git config receive.denyCurrentBranch ignore
git config core.worktree /var/www
6,本地remote配置
git remote add testing ssh://gituser@ipaddress/strage/git/.git
git push testing master
7, 更新服务端 git 仓库状态并检出文件
git update-server-info
git checkout -f
或者:
git checkout branch_name # 如果push的不是master分支
检查是不是将文件更新进来了
8. 设置服务器端更新钩子 post-receive
cd .git/hooks
vim post-receive
#!/bin/sh
unset GIT_DIR
cd ..
git checkout -f
修改post-update权限
chmod +x post-receive
后续代码的更新:
1. github 有更新的时候 pull 更新本地部署仓库
2. 然后本地先 push 到测试服务器进行测试
3. 测试通过之后 push 到正式服务器进行上线
4. 代码的回滚:
*服务器端回滚:推荐 git reset --hard HEAD^
本地仓库回滚: 无需登陆服务器即可实现代码回滚,git reset HEAD^ 保留代码回滚,然后使用 git push remote_name local_branch_name -f 强制推送