Git服务器远程部署代码

2 篇文章 0 订阅

Git服务器远程部署代码

[序言] 最近使用git进行代码远程部署到服务器时,查阅过很多文章,但是大多数文章都是傻瓜式的教程,而且不同的文章讲的还不大一样,结果看的我是满脑浆糊。最后我通过各种途径弄懂了以后,才发现这么简单的原理为什么就不能先讲清楚呢?还是俗话说得好:授人以鱼不如授人以渔

所以,下面我会以我个人的理解来讲讲Git服务器远程部署代码的基本原理以及其大致过程

1. Git服务器

Git可以让我们自己搭建一个git服务器,实现很简单:

git init --bare [directory]

参数directory可以指定我们希望作服务器的目录的名称,但必须要以.git结尾,然后git会自动在当前目录下为我们创建并初始化这个新目录,使其成为一个git服务器仓库。如果参数directory省略或者是一个.,则表示当前所在的目录,git会直接初始化当前的目录,但当前的目录名称也必须要以.git结尾,这个服务器才有效。

我们可以把服务器仓库和本地的仓库看成是同一种,只不过其中对代码的存储方式以及它们所具有的功能不一样。
至此,我们就可以在本地仓库克隆这个服务器仓库,或者向服务器仓库推送代码,这里不再详细展开了。

注意: git服务器的地址,就是远程机器的网络路径(IP地址)+ 机器里git服务器目录的可访问路径(一般都是绝对路径),而访问的通信协议是git(就是ssh),例如:git@123.45.67.89:22/xxx/xxx.git,前面是协议以及机器的IP地址,ssh端口号默认22可以省略,如果本地仓库和服务器仓库在同一台机器上可以省略不写;后面的是在这台机器上访问服务器目录的绝对地址。

2. Git钩子(hooks)

如果把git服务器的工作内容和流程划分成各种不同的阶段和功能的话,git钩子可以看作是与其中特定阶段直接相关联的脚本文件。这就像是触发器,达到指定的条件,就会触发对应的任务状态,并执行对应的脚本来实现一些操作。

在仓库目录下,有一个hooks文件夹,里面就是那些对应的脚本文件,git默认生成的是样例文件,不会起效,若想要起效只需要将.sample后缀去掉就可以了,也可以自己重新创建并编写脚本,而文件的名称是Git已经规定好的,不能随便写,感兴趣的可以自行去官网了解更多内容。

而我们所需要的是,在本地向服务器推送了新的代码后,行为在服务器上也能够自动部署这些新的代码。所以我们所需要的Git钩子文件是post-receive文件,创建了post-receive文件之后就可以打开编辑脚本了,其中git支持一些常用类型的脚本,bashshell等,具体的可自行查找。
git服务器会在接收到新的推送内容后,触发执行post-receive脚本文件,所以我们就可以编写自己需要执行的脚本任务了。

3. 编写脚本

了解了钩子(hooks)大致原理后,我们就可以开始编写脚本来执行我们想要的任务了。
提醒: 在代码部署的目录里也是git本地仓库

#!/bin/sh
# 指定当前文件内容为shell脚本,使用/bin/sh来运行

unset GIT_DIR
# 先释放git当前工作目录,否则后面在部署目录拉取最新时会出错, GIT_DIR是git关键字

cd xx/xxx/DeployPath 
# 切换目录到代码的部署目录下

git pull
# git pull origin master指令拉取最新内容

上述三行命令只是最简单的脚本,本人对shell的了解不够深入,就不在此献丑了,只拿上面的来说明hooks的工作原理的工作流程就可以了,更多更完善的功能以后再说吧,网上其它的一些文章里也有很多脚本写法可以借鉴。

最后

这篇文章可能需要一定的Git基础来加快理解,因为本文对一些git操作有所简略,会git的可能会明白其中过程,不明白的可以先多了解一些git内容,这对以后自己的工作学习也会很大的帮助。当然,精通git的估计也不会来看这篇文章了吧【狗头保命】。

补充: 添加ssh密钥: 在/home/或者/home/git/目录下的.ssh文件夹目录, 创建authorized_keys文件, 写入客户端机器的公钥, 不同公钥换行存储。注意windows和linux的换行符兼容性。

这篇文章也是我在学习git和实际利用Git来完成我所需要的功能时所遇到的一些问题的解惑,及时记录下来,以后还可以回顾一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值