使用git以后,开始在push文件以后总是需要到服务器上去git pull 才能更新,很是麻烦。
后来查找资料,发现git有类似于svn中的钩子设置,在hooks文件夹的文件中。
我使用的是gitosis来管理git版本库,所以,在repositories中的项目中的hooks文件中进行设置,开始设置post-receive,发现shell脚本可以运行,git可以运行,唯独在文件中添加 git pull 时会报错,提示:"fatal: Not a git repository: '.'"。hook脚本执行了cd之后,继续执行git语句拉取的时候还是在hooks文件夹下,而不是cd的文件路径。
#!/bin/sh export LANG=zh_CN.UTF-8 cd /www/myproject/ unset GIT_DIR //重要是这里.. git pull origin master
上面主要是添加了unset GIT_DIR
git的hooks里面默认有一些环境变量,会导致无论在哪个语句之后执行git命令都会有一个默认的环境路径,既然这样unset 掉默认的GIT环境变量就可以了。