利用Git的hooks同步更新文件到本地或者远程服务器

Git也有和svn类似的钩子(hooks)来在更新后进行一些同步操作,而且非常方便。下面实现的是在开发机上完成开发工作后,提交到git服务器,并同步更新到项目服务器。便于测试或者上线。

环境

  • 192.168.0.2 本地开发机 项目克隆到本机
  • 192.168.0.3 git中心服务器
  • 192.168.0.4 项目服务器

配置

开始配置,实现在开发机上提交后,项目服务器上同步更新到最新版本。

先配置钩子文件,进入git服务器项目test.git目录下,

$ touch post-receive //创建脚本
$ vi post-receive   //编辑脚本

脚本内容:

#!/bin/bash

GIT_WORK_TREE=~/remote-post/test git checkout -f  //提交的时候更新文件,可在具有写权限的地方建立文件夹。
scp -r ~/remote-post/test root@192.168.0.4:/home/project  //使用scp把文件上传到项目服务器。

给脚本添加执行权限:

$ chmod +x ./post-receive

给项目服务器添加git服务器的公钥

$ ssh-keygen -t rsa -C "rsa"
$ ssh-copy-id ~/.ssh/id_rsa.pub root@192.168.0.4

在git服务器上试试能否免密码登陆项目服务器:

$ ssh root@192.168.0.4

成功登录即可,现在可在开发机上开发项目,成功提交后会同步更新到项目服务器。 so easy!

标签: git, hooks, scp, 同步更新

添加新评论