原因:目前公司使用的是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. 客户端拉取远程仓库文件
[email protected]:/home/data/git/gittest.git
192.168.1.103 : 服务器的IP地址
/home/data/git/gittest.git : 远程仓库的绝对定位地址
10. 禁止 git 用户 ssh 登录服务器
编辑/etc/passwd
找到:
1 |
|
修改为
1 |
|
11. 使用Git的钩子功能(实现服务器 远程仓库与本地仓库同步)
在tmp 目录下克隆的远程仓库的文件夹,目前服务器上的本地仓库是没有文件的(除了 .git 工作区)
进入服务器远程仓库,进入hooks文件夹下,创建 post-receive文件
编辑post-receive文件
/tmp/gittest : 就是服务器上本地仓库的地址
给予post-receive可执行的权限
chown 设置本地仓库的所属
设置所有的远程仓库都属于git用户
成功
结语
其实弄远程仓库是不难的,主要是Linux下的权限比较严谨,所以步骤比较多,多练就不会觉得难了