本文参考这两篇博客:
ubuntu上配置git服务器 http://www.cnblogs.com/xl19862005/archive/2011/06/28/2092464.html
CentOS下搭建Git服务器Gitosis http://blog.haohtml.com/archives/12658
1.编译安装git
在Ubuntu 上安装Git非常的简单,只需要:
sudoapt-get install git-core
但是CentOS 默认的yum源中没有Git,只能下载RPM 包安装,确保已安装了依赖的包
sudoyum install curl curl-devel zlib-devel openssl-devel perl cpio expat-develgettext-devel perl-ExtUtils-MakeMaker
安装最新的Git
$wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
$ tar xzvf git-latest.tar.gz
$ cd git-{date}
$ autoconf
$ ./configure –with-curl=/usr/local
$ make
$ sudo make install
$git –version
git version 1.7.12-rc0
2.安装gitosis
1.$yuminstall python python-setuptools
2.$gitclone git://eagain.net/gitosis.git 这一步这个地址访问不到,用这个库:git://github.com/res0nat0r/gitosis.git
3.$cdgitosis
4.$pythonsetup.py install
1.$ssh-keygen-t rsa #不需要密码,一路回车就行(在本地操作)
2.$scp~/.ssh/id_rsa.pubroot@serverIp:/tmp/ #上传你的sshpublic key到服务器
这一步出现错误:ssh: connect to hostxxx port 22: Connection refused
查询服务器ssh端口号不是默认的22,被改成16732,使用scp -P 16732 ~/.ssh/id_rsa.pubroot@serverIp:/tmp/ 指定端口上传成功。
4.初始化gitosis[服务器端]
1.$ adduser git # 新增一个git用户
2.$ sugit # 切换倒git用户下
3.$ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是刚刚传过来的,注意放在/tmp目录主要是因为此目录权限所有人都有定权限的
4.$ rm /tmp/id_rsa.pub # id_rsa.pub已经无用,可删除.
5.管理gitosis的配置文件
gitosis本身的配置也是通过git来实现的。在你自己的开发机里,把gitosis-admin.git这个仓库clone下来,就可以以管理员的身份修改配置了。
在你的电脑里:
usr@pc1:~/work$ git clone git@<server>:gitosis-admin.git
usr@pc1:~/work$ cd gitosis-admin/
该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥:
各个用户按照前面提到的办法生成各自的ssh公钥文件后,把所有人的 ssh公钥文件都拿来,按名字命名一下,比如b.pub,lz.pub等,统统拷贝到keydir下:
usr@pc1:~/work/gitosis-admin$ su root
root@pc1:/home/a/work/gitosis-admin# cp /path/to/.ssh/id_rsa.pub./keydir/b.pub
root@pc1:/home/a/work/gitosis-admin# exit
修改gitosis.conf文件,我的配置大致如下:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = a@server usr@pc1
[group hello]
writable = teamwork
members = a@server b
[group hello_ro]
readonly = teamwork
members = lz
这个配置文件表达了如下含义:gitosis-admin组成员有a, usr,该组对gitosis-admin仓库有读写权限;
team组有a,b两个成员,该组对teamwork仓库有读写权限;
team_ro组有lz一个成员,对teamwork仓库有只读权限。
当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。
加入新文件、提交并push到git服务器:
usr@pc1:~/work/gitosis-admin$ git add .
usr@pc1:~/work/gitosis-admin$ git commit -am “add teamweok prj andusers”
usr@pc1:~/work/gitosis-admin$ git push origin master
6.初始化测试项目
我们在服务器上新建一个空的项目仓库,叫“teamwork”。
切换到git用户:
a@server:/home/git$ su – git
$ cd /home/repo
$ mkdir teamwork.git
$ cd teamwork.git
$ git init - -bare 注:这是在服务器上运行的,是为了初始化一个根级的git仓库
$ exit
但是,到目前为止,这只是一个空仓库,空仓库是不能clone下来的。为了能做clone,我们必须先让某个有权限的人放一个初始化的版本到仓库中。
以下是在客户端完成。
usr@pc1:~/work$ mkdir teamwork-ori
usr@pc1:~/work$ cd teamwork-ori/
usr@pc1:~/work/teamwork-ori$ git init 注:这是在用户端的PC上执行的,为的是初始化一个本地的版本库
usr@pc1:~/work/teamwork-ori$ echo “/*add something*/” > hello
usr@pc1:~/work/teamwork-ori$ git add .
usr@pc1:~/work/teamwork-ori$ git commit -am “initial version”
usr@pc1:~/work/teamwork-ori$ git remote add origingit@<server>:teamwork.git
usr@pc1:~/work/teamwork-ori$ git push origin master
到此为止teamwork已经有了一个版本了,team的其他成员只要先clone一下 teamwork仓库,就可以任意玩了。
usr@pc1:~/work/teamwork-ori$ su b
$ cd /home/b
$ git clone git@<server>:teamwork.git
$ cd teamwork
$ vim hello
$ git add .
$ git commit -am “b add”
$ git push origin master
$ exit
7.添加realv210项目
在服务器上建立一个空的仓库,然后在客户机上建立一个仓库,将realv210的源码添加进去,并向服务器提交。
其它新的用户从服务器克隆仓库是会报错:
出现’gitosis-admin’ does not appear to be a git repository,短路径无效时替换为全路径
在服务器上使用短路径会取现下面这个问题,原因是没有找到对应匹配的密钥所致,如果正确使用了ssh密钥则不会出现这个问题,这里就不去折腾了
1
2
3
4
5
root@stu-system:/home/git/repositories# git clone git@127.0.0.1:gitosis-admin.git
Cloning into gitosis-admin...
git@127.0.0.1's password:
fatal: 'gitosis-admin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
使用以下命令解决,只不过每次push和pull的时候都需要输入一遍git用户的密码,略为繁琐
1.编译安装git
在Ubuntu 上安装Git非常的简单,只需要:
sudoapt-get install git-core
但是CentOS 默认的yum源中没有Git,只能下载RPM 包安装,确保已安装了依赖的包
sudoyum install curl curl-devel zlib-devel openssl-devel perl cpio expat-develgettext-devel perl-ExtUtils-MakeMaker
安装最新的Git
$wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
$ tar xzvf git-latest.tar.gz
$ cd git-{date}
$ autoconf
$ ./configure –with-curl=/usr/local
$ make
$ sudo make install
$git –version
git version 1.7.12-rc0
2.安装gitosis
1.$yuminstall python python-setuptools
2.$gitclone git://eagain.net/gitosis.git 这一步这个地址访问不到,用这个库:git://github.com/res0nat0r/gitosis.git
3.$cdgitosis
4.$pythonsetup.py install
1.$ssh-keygen-t rsa #不需要密码,一路回车就行(在本地操作)
2.$scp~/.ssh/id_rsa.pubroot@serverIp:/tmp/ #上传你的sshpublic key到服务器
这一步出现错误:ssh: connect to hostxxx port 22: Connection refused
查询服务器ssh端口号不是默认的22,被改成16732,使用scp -P 16732 ~/.ssh/id_rsa.pubroot@serverIp:/tmp/ 指定端口上传成功。
4.初始化gitosis[服务器端]
1.$ adduser git # 新增一个git用户
2.$ sugit # 切换倒git用户下
3.$ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是刚刚传过来的,注意放在/tmp目录主要是因为此目录权限所有人都有定权限的
4.$ rm /tmp/id_rsa.pub # id_rsa.pub已经无用,可删除.
5.管理gitosis的配置文件
gitosis本身的配置也是通过git来实现的。在你自己的开发机里,把gitosis-admin.git这个仓库clone下来,就可以以管理员的身份修改配置了。
在你的电脑里:
usr@pc1:~/work$ git clone git@<server>:gitosis-admin.git
usr@pc1:~/work$ cd gitosis-admin/
该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥:
各个用户按照前面提到的办法生成各自的ssh公钥文件后,把所有人的 ssh公钥文件都拿来,按名字命名一下,比如b.pub,lz.pub等,统统拷贝到keydir下:
usr@pc1:~/work/gitosis-admin$ su root
root@pc1:/home/a/work/gitosis-admin# cp /path/to/.ssh/id_rsa.pub./keydir/b.pub
root@pc1:/home/a/work/gitosis-admin# exit
修改gitosis.conf文件,我的配置大致如下:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = a@server usr@pc1
[group hello]
writable = teamwork
members = a@server b
[group hello_ro]
readonly = teamwork
members = lz
这个配置文件表达了如下含义:gitosis-admin组成员有a, usr,该组对gitosis-admin仓库有读写权限;
team组有a,b两个成员,该组对teamwork仓库有读写权限;
team_ro组有lz一个成员,对teamwork仓库有只读权限。
当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。
加入新文件、提交并push到git服务器:
usr@pc1:~/work/gitosis-admin$ git add .
usr@pc1:~/work/gitosis-admin$ git commit -am “add teamweok prj andusers”
usr@pc1:~/work/gitosis-admin$ git push origin master
6.初始化测试项目
我们在服务器上新建一个空的项目仓库,叫“teamwork”。
切换到git用户:
a@server:/home/git$ su – git
$ cd /home/repo
$ mkdir teamwork.git
$ cd teamwork.git
$ git init - -bare 注:这是在服务器上运行的,是为了初始化一个根级的git仓库
$ exit
但是,到目前为止,这只是一个空仓库,空仓库是不能clone下来的。为了能做clone,我们必须先让某个有权限的人放一个初始化的版本到仓库中。
以下是在客户端完成。
usr@pc1:~/work$ mkdir teamwork-ori
usr@pc1:~/work$ cd teamwork-ori/
usr@pc1:~/work/teamwork-ori$ git init 注:这是在用户端的PC上执行的,为的是初始化一个本地的版本库
usr@pc1:~/work/teamwork-ori$ echo “/*add something*/” > hello
usr@pc1:~/work/teamwork-ori$ git add .
usr@pc1:~/work/teamwork-ori$ git commit -am “initial version”
usr@pc1:~/work/teamwork-ori$ git remote add origingit@<server>:teamwork.git
usr@pc1:~/work/teamwork-ori$ git push origin master
到此为止teamwork已经有了一个版本了,team的其他成员只要先clone一下 teamwork仓库,就可以任意玩了。
usr@pc1:~/work/teamwork-ori$ su b
$ cd /home/b
$ git clone git@<server>:teamwork.git
$ cd teamwork
$ vim hello
$ git add .
$ git commit -am “b add”
$ git push origin master
$ exit
7.添加realv210项目
在服务器上建立一个空的仓库,然后在客户机上建立一个仓库,将realv210的源码添加进去,并向服务器提交。
其它新的用户从服务器克隆仓库是会报错:
出现’gitosis-admin’ does not appear to be a git repository,短路径无效时替换为全路径
在服务器上使用短路径会取现下面这个问题,原因是没有找到对应匹配的密钥所致,如果正确使用了ssh密钥则不会出现这个问题,这里就不去折腾了
1 2 3 4 5 | root@stu-system:/home/git/repositories# git clone git@127.0.0.1:gitosis-admin.git Cloning into gitosis-admin... git@127.0.0.1's password: fatal: 'gitosis-admin' does not appear to be a git repository fatal: The remote end hung up unexpectedly |
使用以下命令解决,只不过每次push和pull的时候都需要输入一遍git用户的密码,略为繁琐
| git clone git@127.0.0.1:/home/git/repositories/gitosis-admin.git |
1,以root用户登陆
用fdisk -l 看看U盘的设备
假如U盘是sda1
2,确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令:mkdir /mnt/usb_disk,成功后进行下一步。
3,载入 u 盘,需键入以下命令:mount -t vfat /dev/sda1 /mnt/usb_disk
成功后,即可使用 u 盘了, 文件就在目录 /mnt/usb 下。
4,卸载u盘:在使用完u盘后,在拔出前需要先键入卸载U盘命令
命令如下:umount /mnt/usb