准备工作:

1、一台虚拟linux环境和window

开始工作

1、安装git(略)

  2、创建git用户和创建test.git裸仓库

[root@localhost ~]# useradd -m git #创建用户,shell是bash
[root@localhost ~]# su git
[git@localhost root]$  cd ~
[git@localhost ~]$ mkdir repository && cd repository
[git@localhost repository]$  git init --bare test.git

  此时在repository目录生成test.git,作为远程仓库

  3、生成公私钥(多种工具生成),此处使用ssh-keygen,大概情形如下

[git@localhost .ssh] cd /home/git/.ssh  #没有.ssh目录,自行创建
[git@localhost .ssh]$ ssh-keygen -t rsa -C 'git@master.com'
Generating public/private rsa key pair.
Enter file in which to save the key (/home/git/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/git/.ssh/id_rsa.
Your public key has been saved in /home/git/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:J06qIJSTy2n0kSfmAwavvxrv2fwK1pd2UwifUg6axl4 git@master.com
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|.     o .        |
|..o..o * o       |
| O.==.E S o      |
|=.O++. * +       |
|+=++o = +        |
|.* *.+ . .       |
|.o*.=o.          |
+----[SHA256]-----+

  会生成两个文件id_rsa和id_rsa.pub,以.pub结尾的是公钥,将公钥放到authorized_keys文件中,实现免密登录

[git@localhost .ssh]$ cat id_rsa.pub >> ./authorized_keys

  4、window客户端

$ git clone git@ip:/home/git/repository/test.git

  5、Linux客户端

[git@localhost ~]$ mkdir test && cd test
[git@localhost test]$ git init #初始化仓库
[git@localhost test]$ git remote add origin git@ip:/home/git/repostroy/test.git
[git@localhost test]$ git pull origin master
The authenticity of host 'ip (ip)' can't be established.
ECDSA key fingerprint is SHA256:uSKcAOh8Q8Lca9vlPQhjVGm8lPtEpc09Ze4GTW70lFs.
ECDSA key fingerprint is MD5:66:f8:99:85:bc:e2:20:51:f0:4e:59:88:30:2e:5a:2d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ip' (ECDSA) to the list of known hosts.
remote: Counting objects: 100, done.
remote: Compressing objects: 100% (73/73), done.
remote: Total 100 (delta 5), reused 0 (delta 0)
Receiving objects: 100% (100/100), 7.68 KiB | 0 bytes/s, done.
Resolving deltas: 100% (5/5), done.
From 192.168.0.159:/home/git/repostroy/test
 * branch            master     -> FETCH_HEAD

  6、使用post-update实现自动化

[git@localhost ~]$ /home/git/repostroy/test.git/hooks/post-update
# 添加如下内容
unset GIT_DIR
cd /home/git/fail
git pull origin master

  7、测试(window客户端)

  成功!!!!

碰到的几个问题

1、post-receive和post-update的区别、

2、远程无法执行

答、需要给post-receive或者post-update执行权限

3、如图

  

答:要在git用户生成公私钥,因为git远程库是用git用户做pull操作的

4、cannot open .git/FETCH_HEAD: Permission denied

 答:查看FETCH_HEAD的所属主、所属组是不是git,不是用户chown命令修改

5、暂时没有

  

  

git利用hooks实现自动部署的更多相关文章

  1. windows环境下利用Gitblit搭建Git服务器并实现自动部署Web站点目录

    Git服务搭建多见于linux环境,但windows主机也不少,目前网上文章诸多不全,且以讹传讹,不甚清楚.下面介绍windows环境下的自动部署和发布. 所需环境及资源:Java环境.Gitblit ...

  2. 用 Git Hooks 进行自动部署

    原文发表于 http://ourai.ws/posts/deployment-with-git-hooks/ 昨天开始接手开发公司前端团队的主页,在稍微修改点东西后推送到远程仓库想看下线上结果时发现并 ...

  3. php项目使用git的webhooks实现自动部署

    前言 在项目开发中使用git进行代码的管理,每次完成更改上传代码后,还需要登录服务器将代码拉取下来.现在git服务器(gitee/gitlab/github)都会有Webhooks功能,以实现在向gi ...

  4. 搭建Git服务器环境----Git hooks代码自动部署

    引言:自己想搭一套git的服务端环境,不想用github码云等.经多方资料整合,实验总结,以下是亲测有效的方式.可用于公司日常开发 一.搭建Git环境 ① 安装 Git Linux 做为服务器端系统, ...

  5. 初始化git库并配置自动部署

    1.初始化库 git init --bare wap.git 2.配置wap.git/config文件 [core] repositoryformatversion = 0 filemode = tr ...

  6. Gogs 设置Git钩子实现项目自动部署

    每次修改代码需要上传到 git仓库,查看了一下 Gogs 使用文档 发现有 web钩子 这个选项,然后发现了本地可实现的 Git钩子. 注意:需要用到管理员帐号登录,进行仓库的设置. 有三种状态分别是 ...

  7. svn钩子(hooks)自动部署代码到web目录

      版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/li956732806/article/details/71158869   web目录:/hoe ...

  8. Jenkins+Git的搭建和自动部署

    前言 Jenkins在工作中都使用过,之前都是运维去搭建部署,弄好了之后给我一个网址去构建项目就可以了,所以也都是一直没了解过安装过程. 今天在自己的服务器上搭建了一遍,中间有遇到很多坑,特在此归纳总 ...

  9. GIT服务器实现web代码自动部署

    之前在一台vps服务器上面搭建了Git服务器,用来做代码管理,方便团队开发.但是问题也就相应的来了,使用git可以轻松的上传代码,而由于做的是web开发,每次还都得到服务器上把代码手动pull或者复制 ...

随机推荐

  1. MySQL 数据库中如何把A表的数据插入到B表?

    web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码 ...

  2. Python--day40--threading模块

    import time from threading import Thread class MyThread(Thread): def __init__(self,arg): super().__i ...

  3. C# 序列类为 xml 可以使用的特性大全

    本文告诉大家如何使用序列类,以及序列时可以用到的特性,特性的作用和一些容易被问的问题 最近我在把项目文件修改为 VisualStudio 2017 的格式,请看从以前的项目格式迁移到 VS2017 新 ...

  4. echarts实现多条可拖动节点的折现图

    这篇博文主要是利用echarts实现两条以及多条可拖动节点的曲线,demo脱胎于官方demo,在官方demo的基础上添加了另一条曲线.因为之前写过一篇在vue中使用echarts实现可拖动节点的折线图 ...

  5. ajaxSetup()方法

    使用ajaxSetup()方法设置全局Ajax默认选项 使用ajaxSetup()方法可以设置Ajax请求的一些全局性选项值,设置完成后,后面的Ajax请求将不需要再添加这些选项值,它的调用格式为: ...

  6. 微软软件开发技术二十年回顾-.NET框架篇

    六. .NET框架篇 .NET是微软自从发布Windows 3.0以来最为激动人心的新技术,是微软战略上为下一个十年对服务器和桌面软件工程的第一步,是微软的一场世纪大豪赌.对于.NET,微软的定义是, ...

  7. kafka性能测试代码

    bin/kafka-producer-perf-test.sh --num-records 5000000 --record-size 5000 \ --topic kafkatopic2 \ --b ...

  8. CSDN博客 专用备份工具

    CSDN博客 专用备份工具 用要的朋友可下载. 本程序为个人所用,仅供学习.作者:潇湘博客网站:http://blog.csdn.NET/fkedwgwy默认文件存放位置为用户名文件夹下,也可以直接自 ...

  9. 数据库基础之Mysql

    数据库的简介 数据库 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数学模型组织.描述和存储,具有较小的冗余,较高的数据独立性和易扩展性, ...

  10. Kubernetes Clusters

    1. 创建集群 Kubernetes集群  Kubernetes协调一个高可用的计算机集群,作为一个单独的单元来一起工作.有了这种抽象,在Kubernetes中你就可以将容器化的应用程序部署到集群中, ...