手动提交好累的,自动部署才是王道


服务器端

  • 创建一个裸仓库
1
2
3
4
pwd   # /home/www/
git init --bare project_xxx.git
cd project_xxx.git/hooks/
cp post-update.sample post-update
  • 创建一个普通的仓库 ,这一步就是为了明确表示一下仓库其实是有两个的,这个仓库才是代码的存储位置
1
2
cd /home/www/
mkdir blog
  • 更改post-update中的内容为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
unset GIT_DIR
DIR_ONE=/home/www/blog/ # 更新后的代码会存储在这个文件夹中,文件夹需要存在
cd $DIR_ONE
git init
git remote add gitee https://gitee.com/project.git # 码云/GitHub代码仓库地址,如果不需要推到远程仓库,可以把这一步和最后的push去掉
git remote add origin /home/www/project_xxx.git # 路径指向裸仓库
git reset --hard # git clean -df
# git pull origin master
# git pull origin master --allow-unrelated-histories # 把两段不相干的分支 进行强行合并
# 强制pull覆盖本地代码
git fetch --all
git reset --hard origin/master
git pull
git push gitee master # 把代码推到远程仓库
  • 配置git,因为用的是服务器,没有配置公钥,直接偷懒配置一下git的全局配置,不需要推到远程仓库可以省略这一步
1
2
3
git config --global user.name "name"
git config --global user.email "email"
git config --global credential.helper store

然后使用git推一次代码,记录一下远程仓库的密码,脚本在推代码的时候就不需要再验证了

客户端

  • 进入程序目录
1
2
git init
git remote add origin 服务器地址:/home/project_xxx.git # 服务端创建的裸仓库的地址

然后就可以在客户端进行操作了

参考: