ubuntu配置git服务器(gitosis)
参考网上资料搭建git服务器过程记录 如下:
服务器端:
硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到。
软件需求:git-core, gitosis, openssh-server, openssh-client,
客户端:
硬件需求:Win7系统
软件需求:msysgit, tortoiseGit, copssh
一、服务器架设
1、安装软件
sudo apt-get install git-core openssh-server openssh-client
2、安装gitosis
a)安装python-setuptools
sudo apt-get install python-setuptools
b)下载并安装gitosis
mkdir ~/src
cd ~/src
git clone https://github.com/res0nat0r/gitosis.git
cd gitosis
sudo python setup.py install
3、增加git用户
sudo adduser -m -s /bin/bash git //创建git账号,用户家目录默认为/home/git,shell为/bin/bash
sudo passwd git //设置git用户的密码
4、初始化Git仓库
1、初始化Git仓库需要一个建立一个管理员帐号,也是一个Git服务器的客户端用户,所以需要在客户端主机生成一个用户,并且生成ssh-key。
在客户端安装ssh服务,包括客户端和服务端。
a)客户端为windows的机器,使用git bash命令行:
cd ~
ssh-keygen -t rsa
在用户家目录生成.ssh目录,有一对公私钥。
b)Linux系统,在当前用户家目录中执行以上相同的命令,即可以生成当前用户的ssh-key。
2、把ssh的公钥上传到服务器,我这里假设上传到服务器的临时目录/tmp。
scp ~/.ssh/id_rsa.pub git@server:/tmp //命令中的server改成你自己服务器的IP
(客户机为windows的可以通过中间目录来拷贝)
3、初始化
sudo -H -u git gitosis-init < /tmp/id_rsa.pub //将git仓库目录初始化到了git用户家目录下
此时,git用户的home目录中将出现repositories目录,该目录为git的仓库。
修改目录权限:sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
4、下载仓库配置项目gitosis-admin到本地客户端
因为git仓库的配置文件都是以git方式来管理的,所以你需要先下载一份到客户端本地 。
在你的用户目录下面创建一个临时目录work,
然后 进入到该目录:cd work,
然后执行命令:
git clone git@ip:/home/git/repositories/gitosis-admin.git // 命令中的ip改成你自己服务器的IP
clone时不能用绝对路径,只能写相对于git用户home的相对路径
错误:git@ip:gitosis-admin.git
执行完成之后,work目录下会生成gitosis-admin目录,目录下面有一个gitosis.conf文件和一个keydir目录,它们将是下面配置任务的主要操作对象,请牢记它们的位置。
错误:git@ip:gitosis-admin.git
执行完成之后,work目录下会生成gitosis-admin目录,目录下面有一个gitosis.conf文件和一个keydir目录,它们将是下面配置任务的主要操作对象,请牢记它们的位置。
5、新建项目
1、修改配置文件gitosis.conf,增加如下内容。
[group first-pro] //用户组名
members = jeff //成员名,多个成员可以用空格隔开
writable = first-pro //项目名及其用户对于此项目的权限,目前是可写
每次修改内容,需要提交才能生效。
git add .
git commit -m "somthing"
git push
2、创建项目目录
先在服务端切换到git用户
su - git
mkdir first-pro.git
cd first-pro.git
git init --bare
这样在客户端使用 git clone git@server:/home/git/repositories/first-pro.git克隆仓库到本地目录
进入工作目录 cd first-pro
创建工程文件 touch 1.txt
添加工程文件到本地仓库中 git add ./1.txt
提交整个项目到本地仓库 git commit -m "comment"
提交整个项目到远程仓库 git push origin master //只有这样子,团队其他开发人员才能看到你修改的代码
查看提交日志 git log
查看本地库当前的状态,比如是否有文件需要提交。 git status
新的项目仓库已经生成,其他开发人员可以git clone 命令从服务器上下载一份工程到自己的本地机器上,协同开发啦!
6、新建用户
关于上一节最后提到的内容,“其他开发人员”,他们是需要管理员来增加和配置的,这一节主要讲怎么添加用户。
1)客户端操作:
首先要生成ssh-key,方法和前面说的一样。
cd ~
ssh-keygen -t rsa
然后一直回车,就OK。然后将生成的id_rsa.pub文件传给GIT服务器管理员
2)服务器端操作:
管理员将客户上传的id_rsa.pub文件移到gitosis-admin/keydir目录中,并且改名为CLIENT_NAME.pub。
文件名与配置文件里的名字要一样。例:用户的pub文件为jeff.pub
给项目first-pro增加新的开发者,编辑gitosis.conf文件,vi gitosis.conf。
[group first-pro] //用户组名
members = huixiao200068 jeff //成员名,多个成员可以用空格隔开
writable = first-pro //项目名及其用户对于此项目的权限,目前是可写
提交修改的管理文件:
git add .
git commit -a -m "add user jeff"
git push origin master
完成上述2步之后,即可以使用该账号共同开发项目first-pro啦!
cd ~
git clone git@SERVER:first-pro.git //克隆项目到本地
…… //do anything you want to do
commit -am "comment"
commit push origin master
浙公网安备 33010602011771号