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

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

正式开发

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

创建Git远程仓库并使用钩子功能_第1张图片

2. 创建用户并设置密码

创建Git远程仓库并使用钩子功能_第2张图片

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

useradd git : 添加git用户

passwd git : git用户设置密码

3. 查看git是否创建成功

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

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

mkdir -P : 递归创建目录

创建Git远程仓库并使用钩子功能_第3张图片

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

yum install : 使用yum安装Git

Git工作库与裸库的区别

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

工作库:

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

创建Git远程仓库并使用钩子功能_第4张图片

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

裸库:

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

创建Git远程仓库并使用钩子功能_第5张图片

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

5. 服务器创建ssh key

创建Git远程仓库并使用钩子功能_第6张图片

创建Git远程仓库并使用钩子功能_第7张图片

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

6. 客户端创建ssh key

创建Git远程仓库并使用钩子功能_第8张图片

创建Git远程仓库并使用钩子功能_第9张图片

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

7. git用户下设置公钥

创建Git远程仓库并使用钩子功能_第10张图片

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

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

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

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

创建Git远程仓库并使用钩子功能_第11张图片

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

创建Git远程仓库并使用钩子功能_第12张图片

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

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

创建Git远程仓库并使用钩子功能_第13张图片

[email protected]:/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的钩子功能(实现服务器 远程仓库与本地仓库同步)

创建Git远程仓库并使用钩子功能_第14张图片

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

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

编辑post-receive文件

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

给予post-receive可执行的权限

创建Git远程仓库并使用钩子功能_第15张图片

chown 设置本地仓库的所属

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

成功

创建Git远程仓库并使用钩子功能_第16张图片

结语

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

原链接:

https://my.oschina.net/u/3554366/blog/1507308

你可能感兴趣的:(创建Git远程仓库并使用钩子功能)