如果想建立一个基于固定用户组多人协作的git库,那么我们就可以从新建用户组入手。
比如我们建立一个git用户组,规定此组下的用户才有权限操作某个git库,
grep git /etc/group ##查看是否有git用户组,如果没有此用户组,就先新添用户组:
groupadd git ### 添加git用户组
sudo usermod -a -G git xiaoang ###将xiaoang加入git组
如果想要将某个用户从git组中删除:
gpasswd -d 用户名 组名 ## 将用户从组删除
或者
usermod -G git yangxue-pd ###将yangxue-pd用户从git另一组中移动到git组中,相当于从别组中删除添加完用户后,可以验证一下user是否属于git组了
groups xiaoang ##查看xiaoang属于哪个组接下来建立git库
mkdir web.git //建立一个web.git库
cd web.git
git init --bare --shared=group //初始化空库为一个基本的可分享的库
ok一个多人协作的git库就建立成功了
其他人可以clone这个库了
git clone ssh://your address/~/path/web.git
另一种方式我们通过git init直接初始化一个git目录库
git init --bare --shared=group web //意思是我们新建了一个目录为web的git库
我们还可以将该目录的权限限定到指定的开发者, 上面的步骤我们新建了git用户组,在这我们把web目录的用户权限改为git组
sudo chgrp -R git git/web/ //将git/web/目录的组权限更改为git组
chmod -R g+rw web //将web目录加上全局读写权限
chmod g+s `find web -type d` //找出web目录里所有新建文件,并把组权限继承目录
至此只有属于git群组的用户才能使用此git库,是不是安全一些呢
其它补充知识:
上面步骤建立的git库,是一个多人协作的空库,并不是指你平时开发要用到的版本库, 你需要通过git clone 生成一个自己的开发库。
git clone ssh://your address/~/path/web.git
通过git remote -v 可以看到我们的公共库的信息
然后我们执行平常的开发写入工作
echo 111 >> a.html
git add a.html
git commit -m'添加新的文件'
git push origin master ## 将你的修改push到公共库的master分支上
但更为规范的是,平常开发都应该新建一个分支,在需要上线的时候才会merge到master分支,然后再push到远程库的。
所以我们可以:
git checkout -b dev ### 新建一个dev的分支并切换到该分支下,
[xiaoang@xen118v_dev_app ~/front/home]$ git checkout -b dev
Switched to a new branch 'dev'
git branch ###查看分支信息,带*号表示当前所处在哪个分支
[xiaoang@xen118v_dev_app ~/front/home]$ git branch
master
* dev
再补充
sudo chown -R xiaoang webhome/ 更改webhome/的用户为xiaoangchown [-R] 账号名称:用户组名称 文件或目录
git config pack.windowMemory 10m
git config pack.packSizeLimit 20m
git repack -a -d
github的ssh配置如下:
一 、
设置git的user name和email:
$ git config --global user.name "xuhaiyan"
$ git config --global user.email "haiyan.xu.vip@gmail.com"
1.查看是否已经有了ssh密钥:cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
2.生存密钥:
$ ssh-keygen -t rsa -C “haiyan.xu.vip@gmail.com”
按3个回车,密码为空。
Your identification has been saved in /home/tekkub/.ssh/id_rsa.
Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.
The key fingerprint is:
………………
最后得到了两个文件:id_rsa和id_rsa.pub
3.添加密钥到ssh:ssh-add 文件名
需要之前输入密码。
4.在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。