使用 Git 同步部署代码(二) - Git Hook 同步

导语

前文配置好了裸仓库和本地同步,剩下的就是仓库和正式目录之间的自动部署。html

正式目录使用 Git 链接裸仓库

一样是分为两种状况,一种是有代码,个人状况不只是有代码,并且远端还有 GitHub;另外一种是无代码,新建。nginx

已有代码

  1. 切换到正式目录中,再添加一个远端仓库,也就是同服务器中的裸仓库,git remote add git_library /you_path/my_laravel.git
  2. pullpush 测试一下是正常的。一个插曲,由于编辑器还开着 FTP 同步,开始老是出错😓。

新建项目

  1. clone 代码到正式目录 git clone /you_paht/my_laravel.git

配置 Git Hook

  1. 接下去切换到裸仓库的目录中,能够看到 hooks 目录下是有不少示例的hooks
  2. hooks 目录下新建 post-update 文件,编辑完成后设置权限 chmod +x post-update, 文件以下
#!/bin/sh
unset GIT_DIR
DIR_ONE=/usr/local/nginx/html/myLaravel/  #正式目录
cd $DIR_ONE
git pull git_library master #新建项目 remote 默认是 origin

通过测试没有问题。
由于我是在已有的项目中进行操做,遇到各类问题。一个问题是提示没有权限去修改文件。同步使用的是 git 用户,代码文件的全部者是 www-data。最终的解决办法是将 git 添加近 www-data 用户组 usermod -a -G www-data git,同时正式目录执行 chmod -R g+wlaravel

结语

本觉得很简单的流程,没想到过程一波三折。主要问题是在已有的项目中进行部署,若是是新项目会简单不少。git


参考资料:用 Git 钩子进行简单自动部署git hook实现代码自动更新shell

相关文章
相关标签/搜索