git 提供了钩子功能,当某个操作发生时,可以执行某个动作。
ftp上传时没有文件比较,虽然可以winscp提供了同步功能但是不够强大,而且文件多了,会花费比较长的时间。
1、先在主机上搭建一个git服务器,可以参考前篇文章。
2、修改post-receive
切换到git仓库,比如
cd /var/sample.git & ls
可以发现git已经给我们建好了hooks目录,并提供了模板。
进入hooks目录,vi post-receive
#!/bin/sh
git --work-tree=网站文件夹路径 --git-dir=/var/sample.git checkout -f
保存,chmod +x post-receive。
这一步会检出最新的代码,且没有.git目录。
注意,网站文件夹要存在,如果不存在会提示work-tree错误,创建这个相应目录即可。
3、修改网站文件夹权限
chown -R git:apahce 网站文件夹路径
如果用的是nginx请换成相应的用户组。
漏掉这一步会出现,“git checkout-index: unable to create file (Permission denied)”错误。
现在可以试试用git部署代码了。
github也提供了hook功能,不过还得在写相应的脚本,如果自己有服务器,可以直接在服务器上建一个git。
参考了此文。