服务器端简单使用git部署项目
Liang?2018-09-15 22:30:100

前言

以前在 Ubuntu 上更新项目 都是使用scp命令 将文件从本地复制到服务器端 这种方法很繁琐 有时还会出错 所以很希望有一种方法可以实现一键部署 当我了解了 git 后 发现 git 就可以实现一键部署功能

准备

首先需要在 Ubuntu 上安装git

使用命令 sudo apt install git

安装git

输入 y 确认安装

输入命令 git help 查看常用git命令

git 常用命令

在服务器上初始化git 仓库

首先使用命令 mkdir cl.git 创建一个空的目录

然后使用命令 git init --bare 在服务器上初始化一个空的远程git裸仓库

初始化空仓库

裸仓库与用 git init 初始化的仓库不太一样 裸仓库其实相当于通过克隆来的仓库里的.git 文件夹 整个裸仓库只有git索引 不包含工作目录

我们先看一下裸仓库中都有什么

裸仓库内容

  • config文件 git仓库的配置文件
  • description文件 git仓库的描述信息 主要给gitweb等git托管系统使用
  • HEAD文件 包含了一个分支(branch)的引用 通过这个文件 可以得到下一次commit的分支
  • hooks目录 存放了一些shell脚本 可以设置特定的git命令后触发相应的脚本 本文重点使用
  • info目录 包含仓库的一些信息
  • objects目录 存放了所有的git对象
  • refs目录 具体的引用

以上只是简单介绍 欲知详情 请自行百度

使用命令 cd hooks/ 进入hooks目录

hooks目录

所有文件都以sample结尾表示不启用 如果要启用某个文件可以去掉.sample

  • applypatch-msg 可以编辑commit时提交的message
  • commit-msg 可用于在message提交之后修改message的内容或打回message不合格的commit。非0的返回结果会取消本次commit
  • post-update 本hook仅在所有的ref被push之后执行一次
  • pre-applypatch 虽然这个hook的名称是“打补丁前”,不过实际上的调用时机是打补丁之后、变更commit之前。如果以非0的状态退出,会导致变更成为uncommitted状态。可用于在实际进行commit之前检查代码树的状态
  • pre-commit 本hook的调用时机是在获取commit message之前。如果以非0的状态退出则会取消本次commit。主要用于检查commit本身 而不是message
  • prepare-commit-msg 本hook的调用时机是在接收默认commit message之后、启动commit message编辑器之前。非0的返回结果会取消本次commit。本hook可用于强制应用指定的commit message
  • pre-push 在往远程push之前调用。本hook除了携带参数之外,还同时给stdin输入了如下信息:” ”(每项之间有空格)。这些信息可以用来做一些检查,比如说,如果本地(local)sha1为40个零,则本次push是一个删除操作;如果远程(remote)sha1是40个零,则是一个新的分支。非0的返回结果会取消本次push
  • pre-rebase 在执行rebase的时候调用,可用于中断不想要的rebase
  • update 本hook在远程repo每一次ref被push的时候调用 而不是每一次push

服务器自动部署主要使用 post-update

首先使用命令 cp post-update.sample post-update 复制一份 post-update

然后编辑 vim post-update 写入以下内容

#!/bin/sh
unset GIT_DIR #清除变量GIT_DIR
DIR_ONE=/var/www/html  #此目录为服务器页面展示目录
cd $DIR_ONE
git clean -df #清理workspace中未被git版本控制的文件 -d 目录 -f 强制
git pull clgit master #拉取设置好的远程仓库 (其实就是服务器上的git目录)

给 post-update 添加执行权限

chmod +x post-update

经过以上操作服务器端远程git仓库就算搭建完成了

在服务器上配置项目目录

然后进入/var/www/html目录下初始化一个空的git仓库

cd /var/www/html

git init

然后在/var/www/html目录下的配置git

git remote add clgit /var/www/cl.git

测试

在Ubuntu中新建一个空的目录模拟本地开发

cd /var/www/test3

初始化git仓库

git init

配置git仓库信息

git config user.name "cloverliang"

git config user.email "cloverliang@mail.cloverliang.me"

git remote add clgit /var/www/cl.git

新建一个文件 写入以下内容

vim test-git.html

<!DOCTYPE html>
<html>
    <head>
        <title>测试git部署</title>
    </head>
    <body>
        <h1>
            测试git部署cloveliang
        </h1>
    </body>
</html>

git提交

git add test-git.html

git commit -m "git提交"

git push clgit master

git提交

成功后在浏览器上可以直接查看效果

运行成功

结语

以上就是在服务器端简单配置git自动部署 如果你有更好的建议

欢迎在下面留言

ヾ( ̄▽ ̄)Bye~Bye~

更新时间:2018-09-15 22:30:10

文章分类:GIT

喜欢

暂时还没有评论 不如来抢个沙发