资讯专栏INFORMATION COLUMN

搭建团队git工作环境 [完整流程记录]

lucas / 3269人阅读

摘要:服务器环境客户机环境本文使用管理员进行操作服务器安装若碰到如下报错无错忽略这里直接恢复权限为即可需要管理员权限。

服务器环境 Linux CentOS 6.5 (IP:192.168.1.101)

客户机环境 Mac (IP:192.168.1.100)

本文使用管理员进行操作

1. [服务器] 安装git
$ sudo yum install git

若sudo碰到如下报错(无错忽略这里):

sudo: /etc/sudoers is mode 0640, should be 0440

直接恢复 /etc/sudoers 权限为0440即可(需要管理员权限)。

$ chmod 440 /etc/sudoers
2. [服务器] 安装 openssh 服务器与客户端工具
$ sudo yum install openssh-server openssh-client 
3. [服务器] 配置git用户

帐户创建后,默认家目录会在 /home/git(若设定为其它目录请修改路径)

$ sudo useradd -m git   
$ sudo passwd git #密码你随意
4. [服务器] 创建git仓库目录

创建默认的仓库目录 repositories,此目录可以在后面 gitosis.conf 配置文件里进行修改

$ sudo mkdir /home/git/repositories  

设置git仓库权限

$  sudo chown git:git /home/git/repositories   
$  sudo chmod 755 /home/git/repositories  

初始化git全局设置

$  git config --global user.name "myname"   
$  git config --global user.email "myname@server"  
5. [服务器] 安装 gitosis 管理工具

安装 python 的 setup tool

$  sudo yum install python-setuptools  

安装 gitosis

$  cd /tmp   
$  git clone https://github.com/res0nat0r/gitosis.git    
$  cd gitosis   
$  sudo python setup.py install
6. [服务器] 创建用于管理git的公钥和私钥

默认情况下,公钥和私钥会保存在~/.ssh目录下

$ ssh-keygen -t rsa

公钥需要添加到 /home/git/.ssh/authorized_keys 这里git操作时才不用输入密码,不过请不手动添加进来,我们需要使用gitosis来管理客户机git权限

注意:以前手动加进去的公钥是不受gitosis权限管理的,需要管理就删除手动加入的,让gitosis自动加入

7. [服务器] 配置gitosis

使用上面生成的公匙导入到gitosis里,本机就有了git的管理权限

$  cp ~/.ssh/id_rsa.pub /tmp 
$  sudo -H -u git gitosis-init < /tmp/id_rsa.pub 
$  sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update  
8. [服务器] 管理gitosis

在服务器直接取出进行配置(配置好后,你也可以授权给某客户机帐户进行管理)

$ cd ~   
$ git clone git@192.168.1.101:gitosis-admin.git   
$ cd gitosis-admin/  
$ ls -al 

gitosis.conf是git仓库与权限配文件,keydir目录是存放其它客户机的公匙目录

$  more gitosis.conf  

gitosis.conf 的内容

[gitosis]  
## To override the default ~/repositories path
# repositories = repositories

[group gitosis-admin]  
writable = gitosis-admin  
members = root@localhost.localdomain
8. [服务器] 创建git项目

使用git用户创建测试项目(不要用root帐户创建,注意目录权限)

$ su - git
$ cd /home/git/repositories    
$ mkdir test_project
$ cd test_project
$ git init --bare
$ logout
9. [客户机] 创建成员的公钥和私钥

创建本机公钥和私钥

$ ssh-keygen -t rsa -C "yeyingsenlin928@qq.com"

复制客户机的公钥到服务器上clone出的gitosis-admin/keydir目录中

$  scp ~/.ssh/id_rsa.pub root@192.168.1.101:~/gitosis-admin/keydir/yeyingsenlin.pub
10. [服务器] 在gitosis中给客户机授权

进入服务器上clone出的gitosis-admin目录中

$ cd ~/gitosis-admin 
$ vi gitosis.conf  

在 gitosis.conf 中添加授权配置

[gitosis]  
## To override the default ~/repositories path
# repositories = repositories

[group gitosis-admin]  
writable = gitosis-admin  
#加入了客户机做为gitosis管理
members = root@localhost.localdomain yeyingsenlin
#添加一个组 
[group myteam]
#项目仓库名 
writable = test_project 
#成员名称要写上面公匙文件名对应,多个成员可用空格隔开
members = yeyingsenlin

保存配置,将gitosis改动提交到库

$ git add .  
$ git commit -a -m "Allow yeyingsenlin write access to test_project"  
$ git push origin master  
11. [客户机] 授权后可以使用git仓库了

直接操作不需要密码

$ cd ~  
$ mkdir test_project  
$ cd test_project  
$ echo "testing" > test.txt  
$ git init  
$ git remote add origin git@192.168.1.101:test_project.git
$ git add .
$ git commit -a -m "ok"   
$ git push origin master

换个目录看能否clone回来

$ cd /tmp  
$ git clone git@192.168.1.101:test_project.git
12. [客户机] 可授权客户机管理gitosis

上面已经将yeyingsenlin客户公钥加入配置,直接clone仓库取出 gitosis-admin 即可,对keydir的公钥及gitosis.conf授权进行管理,与上面服务器方法相同

$ cd ~ 
$ git clone git@192.168.1.101:gitosis-admin.git
13. [服务器] 注意git用户权限

因为使用gitosis对git进行限制,要保证/etc/passwd里的git配置为

$ vi /etc/passwd

找到git (通常在最后面)

git:x:501:501::/home/git:/bin/bash

如果是 git-shell 会操作失败

完成!

参考:
Github的SSH KEY配置
在centos 下安装配置基于gitosis 的git 服务
服务器上的 Git - Gitosis
Git远程操作详解
git错误大汇总

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9588.html

相关文章

  • 【完结汇总】iKcamp出品基于Koa2搭建Node.js实战共十一堂课(含视频)

    摘要:云集一线大厂有真正实力的程序员团队云集一线大厂经验丰厚的码农,开源奉献各教程。融合多种常见的需求场景网络请求解析模板引擎静态资源日志记录错误请求处理。结合语句中转中间件控制权,解决回调地狱问题。注意分支中的目录为当节课程后的完整代码。 ??  与众不同的学习方式,为你打开新的编程视角 独特的『同步学习』方式 文案讲解+视频演示,文字可激发深层的思考、视频可还原实战操作过程。 云...

    sPeng 评论0 收藏0
  • 容器环境下的持续集成最佳实践:构建基于 Drone + GitFlow + K8s 的云原生语义化

    摘要:集成测试完成后,由运维同学从发起一个到分支,此时会会运行单元测试,构建镜像,并发布到预发布环境测试人员在预发布环境下再次验证功能,团队做上线前的其他准备工作运维同学合并,将为本次发布的代码及镜像自动打上版本号并书写,同时发布到生产环境。 云原生 (Cloud Native) 是伴随的容器技术发展出现的的一个词,最早出自 Pivotal 公司(即开发了 Spring 的公司)的一本技术小...

    asoren 评论0 收藏0
  • 容器环境下的持续集成最佳实践:构建基于 Drone + GitFlow + K8s 的云原生语义化

    摘要:集成测试完成后,由运维同学从发起一个到分支,此时会会运行单元测试,构建镜像,并发布到预发布环境测试人员在预发布环境下再次验证功能,团队做上线前的其他准备工作运维同学合并,将为本次发布的代码及镜像自动打上版本号并书写,同时发布到生产环境。 云原生 (Cloud Native) 是伴随的容器技术发展出现的的一个词,最早出自 Pivotal 公司(即开发了 Spring 的公司)的一本技术小...

    DevTalking 评论0 收藏0
  • 开始连载啦~每周2更共11堂iKcamp课|基于Koa2搭建Node.js实战项目教学(含视频)|

    摘要:玩转同时全面掌握潮流技术采用新一代的开发框架更小更富有表现力更健壮。融合多种常见的需求场景网络请求解析模板引擎静态资源日志记录错误请求处理。结合语句中转中间件控制权,解决回调地狱问题。注意分支中的目录为当节课程后的完整代码。 ??  与众不同的学习方式,为你打开新的编程视角 独特的『同步学习』方式 文案讲解+视频演示,文字可激发深层的思考、视频可还原实战操作过程。 云集一线大厂...

    B0B0 评论0 收藏0
  • fir.im weekly - 「 持续集成 」实践教程合集

    摘要:来这里看看的工程师如何进行持续集成与持续部署。主要介绍了豆瓣移动持续集成和测试相关实践,用工具化自动化社会化测试来解决遇到的问题,将打包发布环节自动化。这期的持续集成实践分享就到这里。 我们常看到许多团队和开发者分享他们的持续集成实践经验,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集成...

    A Loity 评论0 收藏0

发表评论

0条评论

lucas

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<