操作步骤

创建一个裸仓库

mkdir /home/sky/auto/git
cd /home/sky/auto/git
git init --bare .

添加一个git勾子(就是执行提交代码后的脚本, 这里可以用来执行你部署的脚本就完成自动部署啦.)

创建完裸仓库后, 里有一个hooks的目录.

cd /home/sky/auto/git/hooks

创建一个文件名为post-receive, 并且添加一个可执行的权限给它, 内容如下:

#!/bin/sh

export PATH=自定义的命令行PATH:$PATH

# 这个是用来部署的仓库目录
DEPLOY_PATH="/home/sky/auto/deploy"
cd /home/sky/auto/deploy

ls -lah

echo "before pull, pwd = " $( pwd ) ", whoiam" $( whoami)
#这行不能删除哈,不然会报. fatal: Not a git repository (or any of the parent directories): .git 这样类似的错误.

unset GIT_DIR
git pull origin master || exit 1

${DEPLOY_PATH}/deploy.sh

echo "deploy done" >> /tmp/auto-deploy.log

为项目添加一个远程仓库指向 裸仓库

假设原项目仓库在/home/sky/git/myproject

cd /home/sky/git/myproject
git add remote auto-deploy 你的用户名@你的IP:/home/sky/auto/git

提交代码时,自动部署

git push auto-deploy 本地要部署的分支:master --force

这样子提交到裸仓库的远程地址时,就会触发post-receive脚本,然后在该脚本里进行自动化部署即可了.