首先找到服务器端的git仓库里面(服务器里面的用来接收提交的代码的仓库)
然后cd进去.git的隐藏文件里面,然后打开hooks的文件
在里面vim一个post-receive文件然后在里面添加如下几行代码
DIR=/xxx/xxx
git --work-tree=${DIR} clean -fd
# 直接强制检出
git --work-tree=${DIR} checkout --force
然后给他最大权限 chmod -R 777 ./post-receive (不要问我为什么,任性,当然,755权限就够了也许) 之后进入到你服务器的
xxx/xxx文件里面新建一个git纯净库
git init --bare ygc.git
然后去本地,clone下来你该仓库的代码,之后添加一个test.txt文件,然后提交
git add .
git commit -m"test"
git push
然后你在回到之前目录ls -a 就会发现服务器已经自动化部署好了你所传的测试代码
# 客户端hooks文件夹下
hooks/
|-- applypatch-msg.sample
|-- commit-msg.sample
|-- post-update.sample
|-- pre-applypatch.sample
|-- pre-commit.sample
|-- pre-push.sample
|-- pre-rebase.sample
|-- prepare-commit-msg.sample
|-- update.sample
#服务端hooks文件夹下
hooks/
|-- applypatch-msg.sample
|-- commit-msg.sample
|-- post-update.sample
|-- pre-applypatch.sample
|-- pre-commit.sample
|-- pre-push.sample
|-- pre-rebase.sample
|-- prepare-commit-msg.sample
|-- update.sample
客户端钩子
客户端钩子有多种,可以分为:提交工作流钩子,电子邮件工作流钩子和其他钩子
pre-commit
钩子在键入提交信息前运行。可以用于检查代码风格是否一致。
prepare-commit-msg
钩子在启动提交信息编辑器之前,默认信息创建之后运行。
post-commit
钩子在整个提交过程完成后运行。常用于通知的事情。
服务端钩子
服务端钩子可以对项目执行各种类型策略。可以再推送到服务器之前运行也可以推送到服务器后在运行。
pre-receive
处理来自客户端的推送时触发
post-receive
在客户端push完成后运行,可以用来更新其它系统服务或者通知消息;本文通过这post-receive
进行代码自动部署
Git操作命令
在现有目录中初始化仓库:git init
克隆仓库:git clone
添加文件到暂存区:git add .
提交文件到仓库:git commit -m""
从远程仓库中拉取:git pull
推送到远程仓库:git push [origin] [master]
创建一个裸仓库(没有工作区):git init --bare xxx.git
需要注意的是:如果使用git clone
命令克隆远程仓库,会把远程服务器名设置为origin
主分支设置为master
修改文件或文件夹所属用户及组:chown -R xxx
给文件添加可执行权限:chmod +x xxx