1.安装git和openssh
1-1:安装git和openssh依赖库
2:添加用户git
2-1:该git用户讲作为所有代码仓库和用户权限的管理者
3.安装gitosis:
3-1.什么是gitosis?
Gitosis 就是一套用来管理 authorized_keys 文件和实现简单连接限制的脚本。有趣的是,用来添加用户和设定权限的并非通过网页程序,而只是管理一个特殊的 Git 仓库。
你只需要在这个特殊仓库内做好相应的设定,然后推送到服务器上,Gitosis 就会随之改变运行策略
3-2. 安装python-setuptools
3-2-1:克隆gitosis之前,安装python-setuptools
Gitosis 的工作依赖于某些 Python 工具,所以首先要安装 Python 的 setuptools 包,在 Ubuntu 上称为 python-setuptools:
命令:
3-3-1:克隆gitosis
Gitosis 安装成功以后, Gitosis默认会把 /home/git 作为存储所有 Git 仓库的根目录
4.建立和生成服务器上git管理员ssh密钥
4-1:生成密钥(注意:这里一定要服务器用户身份登录,及 root@ubuntu 用户)
root@ubuntu:~/src# ssh-keygen -t rsa (注意:这里生成密钥同时,不需要设置密码一路回车)
4-2:密钥生成以后,如何当前用户为服务器用户会在/root/.ssh/目录下产生一个文件为id_rsa.pub 和 id_rsa两个文件,
其中id_rsa.pub为密钥文件
4-3:将产生的id_rsa.pub密钥文件上传到服务器临时(/tmp)目录下
5. 初始化gitosis服务器端
5-1:切换到步骤二中建立的git用户下
a> 这里的id_rsa.pub 文件是步骤4生成的git管理员ssh密钥
b> gitosis 服务器运行起来之后,默认会在git用户下初始化一个repositories目录并该目录下生成一个
gitosis-admin.git 管理员仓库
c> 为管理员仓库添加执行权限
6.获取并配置gitosis-admin客户端
6-1:切换到git用户下
注意:gitosis-admin文件下是管理项目和添加开发人员一些相关配置
开发人员的一些相关的配置,同时在该目录下会生成一个配置项目和 开发人员的配置为文件为:gitosis.conf
另一个为文件目录keydir,该目录主要是否维护一些生成不同密钥文件。
6-5:配置管理项目和开发人员的分配
打开gitosis.conf文件
注意:这里的密钥文件名一个要和gitosis.conf文件中用户成员名称保持一致
7.在gitosis服务器上新建我们开发项目仓库
7-1:初始化一个根级项目仓库 注意:这是在服务器上运行的
进入/home/git/repositories/目录下
初始化自定义项目仓库
切换到git用户下
1.添加git用户并生成ssh公钥
如下配置:
8.初始化测试项目
8-1: 在客户端创建项目目录(客户端,当前用户为 fly@ubunt )
现在回到开发者客户端,上面创建了一个新项目tangyouquan并提交到了git server 。我们这里就创建此项目的信息.注意 项目名称 tangyouquan要与gitosis.conf文件配置一致,
error: src refspec master does not match any.
error: failed to push some refs to 'git@127.0.0.1:tangyouquan.git'
这是由于项目为空的原因,我们在项目目录里新创建一个文件。经过->add -> commit -> push 就可以解决了
1-1:安装git和openssh依赖库
root@ubuntu:~# apt-get install git
root@ubuntu:~# apt-get install openssh-server
root@ubuntu:~# apt-get install openssh-client
2:添加用户git
2-1:该git用户讲作为所有代码仓库和用户权限的管理者
root@ubuntu:~# userdel -r git
root@ubuntu:~# useradd -m git
为git用户设置密码root@ubuntu:~# passwd git(设置git管理者用户密码)
3.安装gitosis:
3-1.什么是gitosis?
Gitosis 就是一套用来管理 authorized_keys 文件和实现简单连接限制的脚本。有趣的是,用来添加用户和设定权限的并非通过网页程序,而只是管理一个特殊的 Git 仓库。
你只需要在这个特殊仓库内做好相应的设定,然后推送到服务器上,Gitosis 就会随之改变运行策略
3-2. 安装python-setuptools
3-2-1:克隆gitosis之前,安装python-setuptools
Gitosis 的工作依赖于某些 Python 工具,所以首先要安装 Python 的 setuptools 包,在 Ubuntu 上称为 python-setuptools:
命令:
root@ubuntu:~/src# apt-get install python-setuptools
3-3.克隆gitosis并安装3-3-1:克隆gitosis
root@ubuntu:~/src# git clone https://github.com/tv42/gitosis.git
3-3-2:安装gitosisroot@ubuntu:~/src/# cd gitosis
root@ubuntu:~/src/gitosis# python setup.py install
3-3-3:注意:Gitosis 安装成功以后, Gitosis默认会把 /home/git 作为存储所有 Git 仓库的根目录
4.建立和生成服务器上git管理员ssh密钥
4-1:生成密钥(注意:这里一定要服务器用户身份登录,及 root@ubuntu 用户)
root@ubuntu:~/src# ssh-keygen -t rsa (注意:这里生成密钥同时,不需要设置密码一路回车)
4-2:密钥生成以后,如何当前用户为服务器用户会在/root/.ssh/目录下产生一个文件为id_rsa.pub 和 id_rsa两个文件,
其中id_rsa.pub为密钥文件
4-3:将产生的id_rsa.pub密钥文件上传到服务器临时(/tmp)目录下
root@ubuntu:~/src# scroot@ubuntu-12-04:/home/git/repositories/gitosis-admin.git# chmod 755 /home/repo/gitosis-admin.git/hooks/post-updatep ~/.ssh/id_rsa.pub root@ubuntu:/tmp/
5. 初始化gitosis服务器端
5-1:切换到步骤二中建立的git用户下
root@ubuntu:~/src# su git
5-2:运行gitosis服务器端root@ubuntu:~/src# gitosis-init < /tmp/id_rsa.pub
注意:a> 这里的id_rsa.pub 文件是步骤4生成的git管理员ssh密钥
b> gitosis 服务器运行起来之后,默认会在git用户下初始化一个repositories目录并该目录下生成一个
gitosis-admin.git 管理员仓库
c> 为管理员仓库添加执行权限
root@ubuntu:/home/git/repositories/gitosis-admin.git# chmod 755 /home/repo/gitosis-admin.git/hooks/post-update
6.获取并配置gitosis-admin客户端
6-1:切换到git用户下
root@ubuntu:~/src# su git
6-2:在git用户下创建一个管理项目[Git 入门之一] linux 下部署git服务器和客户端文件夹为:gitosis_admin注意:gitosis-admin文件下是管理项目和添加开发人员一些相关配置
$ mkdir gitosis-admin
6-3: 进入gitosis-admin文件下$ cd gitosis-admin/
6-4:获得gitosis管理项目$ git clone git@127.0.0.1:/home/git/repositories/gitosis-admin.git
注意:此时会在gitosis-admin 目录下生成一个gitosis-admin的一个目录,该目录主要用来管理项目和配置开发人员的一些相关的配置,同时在该目录下会生成一个配置项目和 开发人员的配置为文件为:gitosis.conf
另一个为文件目录keydir,该目录主要是否维护一些生成不同密钥文件。
6-5:配置管理项目和开发人员的分配
打开gitosis.conf文件
root@ubuntu:/home/git/gitosis-admin/gitosis-admin# vi gitosis.conf
配置内容说明:[gitosis]
[group gitosis-admin] # 项目组名
members = root@ubuntu # 用户成员(这里是管理员) 注意:这里的用户名字 要和 keydir下的文件名字相一致
writable = gitosis-admin # 项目名
[group developers] # 开发项目组名
members = root@ubuntu fly@ubuntu 用户成员:root@ubuntu 和 fly@ubuntu 多个用户成员可以追加
writable = tangyouquan # 项目名为:糖友圈
6-6: 将用户成员生成的密钥添加到keydir目录中注意:这里的密钥文件名一个要和gitosis.conf文件中用户成员名称保持一致
7.在gitosis服务器上新建我们开发项目仓库
7-1:初始化一个根级项目仓库 注意:这是在服务器上运行的
进入/home/git/repositories/目录下
初始化自定义项目仓库
切换到git用户下
root@ubuntu:/home/git/repositories#: su git
$ mkdir tangyouquan.git # 创建项目仓库文件
$ cd tangyouquan.git
$ git init --bare # 初始化git仓库
7-2:将初始化的项目仓库,添加到gitosis.conf 配置文件中1.添加git用户并生成ssh公钥
fly@ubuntu:/home/fly# ssh-keygen -t rsa
2.生成公钥文件为:fly@ubuntu.pub
3.将公钥添加到gitosis.conf文件中如下配置:
[gitosis]
[group gitosis-admin] # 项目组名
members = root@ubuntu # 用户成员(这里是管理员) 注意:这里的用户名字 要和 keydir下的文件名字相一致
writable = gitosis-admin # 项目名
[group developers] # 开发项目组名
members = root@ubuntu fly@ubuntu 用户成员:root@ubuntu 和 fly@ubuntu 多个用户成员可以追加
writable = tangyouquan # 项目名为:糖友圈 注意:这里项目和/home/git/repositories/tangyouquan.git 的根级仓库成名保持一致
8.初始化测试项目
8-1: 在客户端创建项目目录(客户端,当前用户为 fly@ubunt )
现在回到开发者客户端,上面创建了一个新项目tangyouquan并提交到了git server 。我们这里就创建此项目的信息.注意 项目名称 tangyouquan要与gitosis.conf文件配置一致,
$ mkdir /home/fly/tangyouquan
$ cd /home/fly/tangyouquan
$ git init
$ git add . # 新增文件 留意后面有一个点
$ git commit -a -m “初始化项目tangyouquan″
# 然后就到把这个项目放到git server服务器上去.
$ git remote add origin git@127.0.0.1:/home/git/repositories/tangyouquan.git # 127.0.0.1为服务器地址 (存在一个问题:在提交到git server 服务器之前,如果不初始化tangyouquan.git 仓库是否可以提交成功并创建和初始化tangyouquan.git 在/home/git/repositories/目录下)
$ git push origin master
说明:如果在执行 git push origin master 的时候,提示以下错误:error: src refspec master does not match any.
error: failed to push some refs to 'git@127.0.0.1:tangyouquan.git'
这是由于项目为空的原因,我们在项目目录里新创建一个文件。经过->add -> commit -> push 就可以解决了
$ touch a.txt
$ git add a.txt
$ git commit -a -m 'add a.txt'
$ git push origin master
8.开发人员从git server服务器获得初始化之后的项目
8-1:前提是开发人员的ssh公钥已经在gitosis-admin已经配置完成下
创建项目开发工程目录:
如project目录:
进入project目录下:
如果是window下:使用gitbash工具从git-server服务器上克隆项目工程
如果是linux下:直接使用git命令来克隆
git clone git@127.0.0.1:/home/git/repositories/tangyouquan.git
8-2: 测试项目克隆下来之后,进入tangyouquan/目录下,使用git命令操作项目(如,向项目中添加文件)
fly@ubuntu:~/tangyouquan$ touch b.txt
fly@ubuntu:~/tangyouquan$ git add .
fly@ubuntu:~/tangyouquan$ git commit -a -m "add b.txt"
fly@ubuntu:~/tangyouquan$ git push origin master # 提交修改