Git客户端的工作
安装完成后,还需要最后一步设置,在命令行输入
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
查看用户名和用户邮箱
$ git config user.name 查看用户名
$ git config user.email 查看用户邮箱
修改用户名和用户邮箱
$ git config --global user.name "username" 修改用户名
$ git config --global user.email "email" 修改用户邮箱
本地创建Git仓库,创建一个空文件夹,Git Bash Here
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
本地创建公钥和私钥
$ ssh-keygen -t rsa -C "415459282@qq.com"
# 接下来,三个回车默认即可
命令中的-C "user.email"也可以不填即$ ssh-keygen -t rsa 可以对比一下填和不填的区别:
这是两台机器生成SSH key的两种方式,填了email的,生成的公钥末尾是email;没填email的,生成的公钥末尾是电脑的登录名@计算机名。
Git服务器端的工作
将管理员的公钥上传到Git服务器
我这里liangyadong.pub为管理员的公钥,上传到/home/git/目录下了。
安装配置gitolite
用git账号登录,并执行如下命令。
# 切换到git账号
$ su git # 进入git主目录
$ cd /home/git # 下载gitolite的仓库
$ git clone https://github.com/sitaramc/gitolite # 创建bin文件夹,必须!!!
$ mkdir -p $HOME/bin # 用下载下来的仓库中的insall执行安装操作,指向的目录就是上一命令行创建的目录
$ ./gitolite/install -to $HOME/bin # 把上传到服务器的 管理员的公钥setup到gitolite中,注意:YourName.pub改成你自己的文件名。
$ ~/bin/gitolite setup -pk ~/YourName.pub # 此时安装配完成后,查看git主目录
$ ls /home/git
drwxr-xr-x 7 git git 4096 Apr 3 23:50 bin # 我们创建的存放gitolite二进制
drwxrwxr-x 6 git git 4096 Apr 3 23:40 gitolite
drwx------ 6 git git 4096 Apr 3 23:52 .gitolite
-rw------- 1 git git 7130 Apr 3 23:52 .gitolite.rc
-rw------- 1 git git 398 Apr 3 23:39 malun.pub # 管理员的公钥
drwxrw---- 3 git git 4096 Apr 3 23:40 .pki
-rw------- 1 git git 19 Apr 4 00:26 projects.list # 仓库列表(gitolite自动创建)
drwx------ 5 git git 4096 Apr 4 00:26 repositories # 存放所有仓库文件夹
drwx------ 2 git git 4096 Apr 4 15:50 .ssh # repositories目录下已经有了两个git仓库了。
# .
# |-- gitolite-admin.git # 管理配置权限的仓库
# `-- testing.git # 测试仓库
好了,到此位置,管理员就可以直接把默认的远程管理的仓库gitolite-admin直接clone到本地进行管理git服务了。
第五步:管理员在本地管理(客户端)和配置服务器端的仓库
下载服务器端的远程管理仓库
# 下载远程管理仓库, 请把aicoder.com换成你自己服务器的域名或者ip
$ git clone git@aicoder.com:gitolite-admin
$ cd gitolite-admin
# 目录结构如下:
# .
# ├── conf # 配置文件夹
# │ └── gitolite.conf # 配置权限的文件
# └── keydir # 客户端的公钥文件夹,所有伙伴的公钥要放到此目录下
# └── malun.pub
参考https://www.cnblogs.com/yadongliang/p/10604331.html#_label1中第6步
gitolite的权限配置
-
添加其他开发的小伙伴
把小伙伴的公钥发给管理员。管理员添加到
gitolite-admin
仓库的keydir
目录下,注意文件名字格式为username.pub
,username就是配置权限时的用户名。 -
配置用户对仓库的读写权限
直接修改conf文件夹下的,gitolite.conf文件。简单解释下几个用法:
-
repo
代表仓库的意思,如果新添加一个repo,代表服务端新建一个空仓库,仓库在conf配置文件push到服务端后会自动创建。 -
RW
代表可读可写 -
@all
代表所有人。 -
master
和dev
代表分支
参考:
@admin = malun
@om = malun bcd repo gitolite-admin
RW+ = malun repo testing
RW+ = @all repo om
RW+ = @admin
RW+ master = @admin
RW+ dev = @om -
应用修改到服务器端
做好配置后,由管理员把修改push到服务器端,会自动处理。
$ git add conf
$ git add keydir
$ git commit -m "added foo, gave access to alice, bob, carol"
$ git push
此时登录服务端,查看/home/git/repositories/
目录下是否增加了对应的仓库了呢?
另外,使用gitolite控制权限不需要修改/etc/passwd文件了,修改了反而会报错.