准备工作:

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. win10 uwp xaml 绑定接口

    本文告诉大家如何在 xaml 绑定属性使用显式继承接口 早上快乐 就在你的心问了我一个问题,他使用的属性是显式继承,但是无法在xaml绑定 我写了简单的代码,一个接口和属性 public class ...

  2. HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法

    HOSt ip is not allowed to connect to this MySql server 报错:1130-host ... is not allowed to connect to ...

  3. uni-app 快速认识

    uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.H5.以及各种小程序(微信/阿里/百度/头条/QQ)等多个平台. 即使不跨端,un ...

  4. 【u224】传送机

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 刷完牙洗完脸,黄黄同学就要上课去了.可是黄黄同学每次去上课时总喜欢把校园里面的每条路都走一遍,当然,黄 ...

  5. eclipse本地启动tomcat报错集锦

    1.eclipse本地添加tomcat服务器    打开Eclipse,单击“window”菜单,选择下方的“Preferences”: 找到Server下方的Runtime Environment, ...

  6. requires php ~7.1 -> your PHP version (7.0.18) does not satisfy that requirement

    一个大兄弟本地用了 PHP 7.1 进行开发,而我本地是 PHP 7.0, 于是悲剧发生了. composer install 之后报错 Loading composer repositories w ...

  7. Redis 命令行工具能这样用你知道了吗?

    我们天天都在使用 Redis 内置的命令行工具 redis-cli,久而久之以为它就是一个简单的交互式 Redis 数据结构手工操作程序,但是它背后强大的功能绝大多数同学可能闻所未闻.本节我们一起来挖 ...

  8. H3C 三种生成树协议的端口状态对比

  9. JS 逻辑运算符 ||、 &&, 位运算符 |、&

    1.JS中的||符号: 运算方法: 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值. 只要“||”前面为true,不管“||”后面是true还是fals ...

  10. 读《Effect Java中文版》

    读<Effect Java中文版> 译者序 序 前言 第1章引言 1   第2章创建和销毁对象 4 第1条:考虑用静态工厂方法代替构造函数 4 第2条:使用私有构造函数强化singleto ...