使用post-receive钩子文件实现服务器本地仓库git项目自动化部署

首先找到服务器端的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

 

猜你喜欢

转载自blog.csdn.net/wkissa/article/details/80417444