git搭建教程之配置多帐号协作开发仓库
目标:linux同组多帐号使用git协作开发
环境:centos7、sshd、git
重点:
1、对于新仓库使用git init --bare --shared=group 使同组系统用户共享git仓库权限。
2、对于已存在仓库使用git config core.sharedRepository true设置共享。true表示group共享。
同组成员共享仓库读写权限成功演示:
1、新建一个git_data系统组作为git成员的组
groupadd git_data
2、添加不同成员的账号,分配到git_data组并指定登录shell为git-shell禁止直接登录系统
useradd -s /usr/bin/git-shell -g git_data git_test1
useradd -s /usr/bin/git-shell -g git_data git_test2
3、为不同的账号分配密码
passwd git_test1
passwd git_test2
4、初始化一个组共享的裸仓库
git init --bare --shared=group /data/git/git-test.git
把仓库所属组改为git开发的组
chown -R git:git_data git-test.git
5、协作开发
(1)成员使用git-test1账号克隆仓库并新建提交一个test.txt文件
(2)另一个成员使用git-test2账号克隆仓库并修改git-test1提交的test.txt文件
(3)git push一切正常,同一组成员可以协助开发
一个失败的示例,未设置共享同组成员提交失败
多帐号提交时提交时发现权限不足
对比2个仓库的objects目录发现没设置共享的仓库默认创建的文件夹为755,同组成员无法在目录内进行写操作,而设置共享--shared=group后提交创建的目录权限为775,同组共享目录读写操作
解决方法为仓库设置同组共享
git config core.sharedRepository true
因为设置分享后新的提交操作才会生效,需要把仓库之前的目录手动改为组共享,完成多帐号同组共享git仓库