文档章节

创建Git远程仓库并使用钩子功能

Sam_D
 Sam_D
发布于 2017/08/13 11:45
字数 912
阅读 19
收藏 1

原因:目前公司使用的是Git版本控制器,好奇心驱使我去学习一下弄Git远程仓库,第一次弄了个工作库出来,以为自己弄好了,然后看了一下别人的Git远程仓库发现,不对,应该弄一个裸库出来才是正道

 

正式开发

1. 首先当然你需要有一个Linux服务器啦,没有不要紧,只要你有vmware也是可以的

2. 创建用户并设置密码

id git : 查看git这个用户是否存在

useradd git : 添加git用户

passwd  git : git用户设置密码

 

3. 查看git是否创建成功

如果创建成功, /home目录下则会出现git这个文件夹的

 

4. 创建Git裸库(远程仓库)

mkdir -P :  递归创建目录

chown -R : 递归设置目标文件夹的所属用户或用户组

yum install : 使用yum安装Git

Git工作库与裸库的区别

这里简单说明一下 git init(工作库)与git init --bare(裸库)的不同

工作库:

(1)目录,创建完工作库之后,会出现.git的隐藏文件夹,进入.git的隐藏文件夹后会出现git工作文件夹

(2)工作区,可以带有git的add commit等一系列的操作,每个人都可以在远程仓库上进行操作,但容易出现冲突

 

裸库:

(1)目录,创建完裸库后,就没有.git的隐藏目录了,git的所有工作文件夹就会出现在当前目录下

(2)裸库,不提供 add commit的操作,只提供记录的功能,也就是说相当于一个日志功能的存在,A进行跟新 提交,B进行拉取 跟新也会一一记录下来,不容易出现冲突

 

5. 服务器创建ssh key

创建完key之后,文件出现在 /root/.ssh下的

 

6. 客户端创建ssh key

创建ssh key 一直按回车就可以了,完成后文件出现在 C:\Users\jiong\.ssh 下

 

7. git用户下设置公钥

在 /home/git 下创建.ssh文件夹,然后在.ssh文件夹下创建authorized_keys文件,编辑authorized_keys文件,

上面箭头的是服务器的ssh key,下面箭头的是客户端的ssh key ,可以一直追加上去的

注意:这里的ssh key 就是 id_rsa.pub这个文件的内容

 

8. 设置.ssh文件夹的用户组

chown -R 设置 .ssh 文件夹的所属是 git用户

文件与文件夹之间设置权限

 

9. 客户端拉取远程仓库文件

 

git@192.168.1.103:/home/data/git/gittest.git

192.168.1.103 : 服务器的IP地址

/home/data/git/gittest.git : 远程仓库的绝对定位地址

 

10. 禁止 git 用户 ssh 登录服务器

编辑/etc/passwd

找到:

1

git:x:1001:1001::/home/git:/bin/bash

修改为

1

git:x:1001:1001::/home/git:/bin/git-shell

 

11. 使用Git的钩子功能(实现服务器 远程仓库与本地仓库同步)

在tmp 目录下克隆的远程仓库的文件夹,目前服务器上的本地仓库是没有文件的(除了 .git 工作区)

 

进入服务器远程仓库,进入hooks文件夹下,创建 post-receive文件

编辑post-receive文件

/tmp/gittest : 就是服务器上本地仓库的地址

给予post-receive可执行的权限

chown 设置本地仓库的所属

设置所有的远程仓库都属于git用户

 

成功

 

结语

其实弄远程仓库是不难的,主要是Linux下的权限比较严谨,所以步骤比较多,多练就不会觉得难了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
Sam_D
粉丝 0
博文 14
码字总数 8031
作品 0
广州
程序员
用git部署网站代码到生产环境VPS

做web开发时,以前都是写好了一个新功能要发布到服务器上都是使用FTP上传覆盖原来的代码,这样做很麻烦,首先要打开FTP程序,然后进入指定文件夹,然后上传,而且用FTP上传经常容易出错总是有...

看看这天
2015/08/06
0
3
使用 GitHub 和 Python 实现持续部署

借助 GitHub 的网络钩子webhook,开发者可以创建很多有用的服务。从触发一个 Jenkins 实例上的 CI(持续集成) 任务到配置云中的机器,几乎有着无限的可能性。这篇教程将展示如何使用 Python...

作者: Clément Verna
04/15
0
0
教你搭建你自己的Git服务器

直到现在,我们主要讨论的还是以一个使用者的身份与 Git 进行交互。这篇文章中我将讨论 Git 的管理,并且设计一个灵活的 Git 框架。你可能会觉得这听起来是 “高阶 Git 技术” 或者 “只有狂...

linuxprobe
2016/10/17
12
0
Gogs 0.10.8 发布,自助 Git 托管服务

Gogs 0.10.8 发布了,建议 Widnows 用户升级。 Bug 修复 Windows mws 版的 Git 钩子无法正常使用 包含图片的链接无法指向正确的 URL #2636 Web 编辑器无法创建带有斜杠的分支 #3568 克隆仓库...

无闻
2017/03/08
638
7
SpringCloud之分布式配置中心(六)

简介 SpringCloudConfig就是我们通常意义上的配置中心,把应用原本放在本地文件的配置抽取出来放在中心服务器,从而能够提供更好的管理、发布能力。SpringCloudConfig分服务端和客户端,服务...

明理萝
09/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

shell特殊符号、cut、sort、uniq、wc、tee、tr、split命令

10月15日任务 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 cut 命令 cut作用:截取字符串 用法如下:cat /etc/passwd |head -2 |cut -d ...

hhpuppy
21分钟前
0
0
Springboot实现filter拦截token验证和跨域

背景 web验证授权合法的一般分为下面几种 1使用session作为验证合法用户访问的验证方式 使用自己实现的token 使用OCA标准 在使用API接口授权验证时,token是自定义的方式实现起来不需要引入其...

funnymin
55分钟前
1
0
linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
14
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部