使⽤ Gitosis 搭建私有 Git 服务器

软件安装

安装 ssh 与 git

 sudo apt-get install git-core openssh-server openssh-client //设置 git 全局的⽤⼾名与邮箱 git config --global user.name "myname" git config --global user.email "myemail@gmail.com"

安装 Gitosis

 //先安装 python-setuptools,再⽤ python 安装 gitosis sudo apt-get install python-setuptools //clone 官⽅ github 仓库,⾃⾏选择 clone 到哪个⽬录 git clone https://github.com/res0nat0r/gitosis.git //注意:中间有两个是数字零cd gitosis/ sudo python setup.py install

Gitosis 的使⽤

通常情况下,⾄少需要两个⽤⼾来使⽤ gitosis 来管理 git 仓库,⼀个是仓库服务器的所有者,⼀个是仓库成员。
​ . 仓库服务器的所有者能够创建新的仓库
​ .仓库成员可以拉取⾃⼰所在的仓库,如果有写权限,可以将修改提交到到服务端上去
gitosis 的配置⽂件也是以 git 仓库的形式存储的,所以需要⼀个仓库成员来管理这些配置⽂件,初始化gitosis 需要指定⼀个公钥⽂件,该⽂件的所有者就是配置⽂件仓库的成员,可以把他当做是管理员,负责收集其他仓库成员的公钥与编辑配置⽂件。

创建仓库成员

仓库成员只需要将本地的 ssh 公钥,提交给管理管理 gitosis 的配置⽂件的⼈即可,管理员负责仓库成员的配置。

⽣成公钥
     ssh-keygen -t rsa //到⽬标 ~/.ssh/ 下可以看到⽣成的公钥⽂件 id_rsa.pub cd ~/.ssh //将公钥⽂件复制⼀份,⽂件名修改为本地的⽤⼾名与主机名,类似 name@computer.pub 这种形式 cp ./id_rsa.pub name@computer.pub //发送到到 gitosis 配置管理员的⼿上 scp ~/.ssh/name@computer.pub [管理员⽤⼾名]@[管理员的IP]:[要发送到的⽬标⽬录]

创建仓库服务器所有者

     # ⼀般是⼀个新的系统⽤⼾ sudo useradd -m git # 设置密码 sudo passwd git # 切换到该⽤⼾ su git # 初始化 gitosis sudo -H -u git gitosis-init < [负责管理配置⽂件的⼈的公钥] # 初始化完成后,进⼊到⽤⼾⽬录下,可以看到⽣成了两个新⽬录,其中的 repositories/ 是⽤来存放 git 仓库 的# 修改 repositories/ ⽬录的⽤⼾权限,仅允许 git ⽤⼾即仓库服务器所有者进⾏操作 sudo chown git:git /home/git/repositories sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update sudo chmod 755 /home/git/repositories

配置文件的使用

以下操作均由配置⽂件仓库 gitosis-admin 的成员来完成
    # 管理配置⽂件的⽤⼾,将服务器上的配置⽂件仓库 clone 下来 git clone git@[服务器的地址]:gitosis-admin.git # 进⼊ gitosis-admin ⽬录中,可以看到⼀个配置⽂件 gitosis.conf 与⼀个⽬录 keydir/ # gitosis.conf 中可以为每⼀个仓库配置成员与权限等信息 # keydir/ ⽬录储存所有仓库成员的 ssh 公钥 vim gitosis.conf # 打开 gitosis.conf# 其中的 group 标签是分组; # writable 的值是仓库的名称,需要 repositories/ ⽬录下存在同样名称的仓库⽬录,并以“.git”作为⽬录名 的后缀; # member 的值是该标签下分组下的所有仓库的成员,多个成员⽤空格隔开,成员的名称需要与 keydir/ ⽬录 下的公钥⽂件名相同; # 修改 gitosis.conf 或者添加了新的公钥到 keydir/ ⽬录下后,只需要像⼀般的 git 仓库⼀样将修改提交到远程 仓库即可应⽤新的配置; git add . git commit -m "描述改变的内容" git push origin master

创建新的仓库

创建仓库需要两个⽤⼾进⾏操作,git ⽤⼾创建新的仓库,配置⽂件管理员为新仓库编写新的配置项并提交修改。

   # git ⽤⼾创建新仓库 su - git cd ~/repositories/ git init --bare [仓库名].git# 配置⽂件管理员修改配置项 su - [管理员账号] cd [gitosis-admin 仓库所在的⽬录] vim gitosis.conf # 为新仓库添加分组和成员

例如添加了新仓库 test,并将成员 member1@group1 与 member2@group1 设置为仓库成员,在gitosis.conf ⽂件中添加:

 [group test] wirtable = test members = member1@group1 member2@group1

权限管理

gitosis 仅仅提供了⾮常简单的权限控制,默认情况下,仓库成员拥有仓库的读写权限,可通过添加配置项,让⼀部分成员只能够读取仓库,⽆法提交修改。例如把上⾯例⼦中的成员 member2@group1,设置为只读权限,在配置⽂件中可以这样写:

   [group test] wirtable = test members = member1@group1 [group test_readonly] readonly = test members = member2@group1

仓库成员 clone 仓库

 git clone git@[服务器地址]:[仓库名].git

具有读权限的成员才能够成功 clone 到本地。
具有写权限的成员可以将修改提交到服务器的仓库上。

ubuntu1804搭建git服务器相关推荐

  1. centos7 下搭建git服务器

    总的来说,搭建git和svn形式差不多 1.首先要在服务器安装git环境,创建用户密码和仓库等 2.然后个人主机(基本是window)安装git客户端 3.将个人主机客户端的秘钥写到git服务器的一个 ...

  2. 搭建Git服务器教程转载

    1. 在Windows下使用ssh+msysgit客户端搭建Git服务器 http://www.codeproject.com/Articles/296398/Step-by-Step-Setup-G ...

  3. git进入项目目录 windows_Windows下搭建Git服务器

    Windows平台下搭建Git服务器的图文详解及教程 Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不 ...

  4. 自建git服务器连接Pycharm系列二:在centos7上搭建git服务器

    在自己的Linux虚拟机上,搭建git服务器,用来保存代码. centos7本身自带git,需要先卸载,安装成较新的版本. 1.卸载系统自带版本 系统已经自带 [root@dscrapy01 ~]# ...

  5. CentOs上搭建git服务器

    CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...

  6. Windows下Git的安装和基本使用、搭建Git服务器

    1 Git的安装和基本使用 安装完成桌面有个Git Bash图标: 弹出Git Bash:用 git init 在目录中创建新的 Git 仓库:下面在G:/git2/test1目录创建: 创建完成会有 ...

  7. CentOS7搭建Git服务器

    CentOS7搭建Git服务器 文章目录 CentOS7搭建Git服务器 前言 搭建步骤 参考链接 前言 现有一台操作系统为CentOS 7的服务器,要将其作为代码库服务器使用,要求使用Git进行代码 ...

  8. Windows 使用 Gogs 搭建 Git 服务器

    随便说两句 之前有使用 Gitblit 在Windows搭建Git服务器,用的也挺好的,可能安装起来略麻烦一点.现在全用 Gogs 在windows搭建Git服务器,主要是因界面好看,管理更方便一些. ...

  9. centos 搭建git服务器

    首先服务器需安装git 参考链接:https://www.cnblogs.com/-mrl/p/11045998.html 搭建git服务器 1.新建git仓库主目录,可以选择创建在/data目录下. ...

最新文章

  1. SAP MM 有了采购订单历史的PO行项目里的采购附加费不允许再改了?
  2. C语言作用域、链接属性和存储类型
  3. .Net程序员学用Oracle系列(10):系统函数(中)
  4. yolt 卫星图像进行快速目标识别的新方法
  5. oracle 27140,ORA-27140 ORA-27300 ORA-27301
  6. 过程的首要目的是好的结果
  7. Post方式之百度翻译的爬取
  8. C语言高级编程:char、signed char 和 unsigned char的使用区别
  9. 食饵捕食者模matlab,几类食饵-捕食者模型的定性分析和数值模拟
  10. vCenter Server Appliance(VCSA )6.7部署指南
  11. cocos2d-2.0-x-2.0.3 批处理文件create-android-project.bat 创建工程缺失lib解决方法
  12. word2vec需要去标点吗_word2vec训练词向量前期处理-中文分词等
  13. (转)量化投资大师采访摘录-詹姆斯·西蒙斯 James Simons
  14. eclipse --->svn插件安装
  15. linux基础ppt下载,《Linux基础》PPT课件.ppt
  16. CAD删除全部文字(网页版)
  17. Hadoop2.7.2 分布式集群搭建(CentOS 7)
  18. 盘点世界顶级五大黑客:个个都是神
  19. 【AEC】【拍乐云Pano 】回声消除(AEC)怎么理解?
  20. 医疗管理系统软件 linux系统,MyPatients 4.0.2 发布,医疗信息管理系统

热门文章

  1. 深度学习——图像锐化
  2. hexdump命令使用
  3. JQuery、Ajax基础语法
  4. Android API开发之TTS开发之Android TTS简单使用
  5. 量子搜索算法(Grover Algorithm)
  6. 2.STC15W408AS单片机时钟
  7. 一文读懂,制造业怎么快速提高生产质量和生产效率?
  8. 什么是虹膜识别,虹膜识别有哪些优缺点?
  9. 项目 cg day05
  10. 在Linux环境下使用OTPS工具箱提取TPXO9海潮模型数据作潮汐水位预报