git server搭建
硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到。
软件需求:git-core, gitosis, openssh-server, openssh-client, Apache2(Gitweb)
安装配置git服务器
安装git和openssh:
a@server:~$ sudo apt-get install git-core openssh-server
a@server:~$ sudo apt-get install git-core openssh-client
a@server:~$ sudo apt-get install python-setuptools
获得gitosis包:
a@server:/tmp$ git clone git://eagain.net/gitosis.git 如果gitosis.git下载不下来,就直接到https://github.com/tv42/gitosis 下载zip压缩文件。
a@server:/tmp$ cd gitosis
a@server:/tmp/gitosis$ sudo python setup.py install
a@server:~$ sudo adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /share1 git =======创建一个用户名叫git的git用户,不需要密码,相关的git管理创建子在/share1目录下
a@server:~$ cd /share1
将客户端的公钥拷贝过来
如果你将作为git服务器的管理员,那么在你的电 脑上(另一台pc)生成ssh公钥:
usr@pc1:~$ ssh-keygen -t rsa
将公钥拷贝到服务器的/tmp下:
usr@pc1:~$ scp .ssh/id_rsa.pub git@<server>:/tmp
usr@pc1:~$ git clone git@shlabdd:gitosis-admin.git =============这个时候拷贝肯定会出问题,原因是公钥没有配好
usr@pc1:~$ sudo ssh-add id_rsa.pub ============呵呵 这下就可以了
usr@pc1:~$ git clone git@shlabdd:gitosis-admin.git
usr@pc1:usr@pc1:~$ ls
gitosis.conf keydir
增加一个GIT子项目管理test
mkdir ptest
cd ptest
git clone git@shlabdd:gitosis-admin.git
cd gitosis-admin/
vim gitosis.conf
git commit -am "creat test"
git remote -v
git branch
git push origin master
git log
cd ..
git clone
[email protected].**:test.git
[gitosis]
[group gitosis-admin]
members = pengp@pengpx
writable = gitosis-admin
[group test]
members = pengp@pengpx
writable = test
提交:
cd gitosis-admin/
vim gitosis.conf
git add
git push
git commit -s "ajf;"
git push
这个时候 会在服务端和客户端看到多了一个文件夹test 但是这是利用git来管理的,所以在服务器端的目录是没有权限打开和管理的,如果要增加其他的用户使用,需要修改配置文件,将用户增加的相应的项目组中
git help 命令 查看不了解的命令
注意:git reset --hard commi_id
git pull .
结果reset掉的patch不能回复,纳闷了一下,才知道要用命令git pull不需要后面的点
此刻只是有usr@pc1这一个用户可以对整个的项目可以进行运用,如果要在test项目管理中加入usr@pc2这个用户,就需要在
usr@pc1:~/pptest/gitosis-admin$ vim gitosis.conf
1 [gitosis]
2
3 [group gitosis-admin]
4 members = usr@pc1
5 writable = gitosis-admin
6
7 [group test]
8 members = usr@pc1
9 members = usr@pc2 ======>加入这行
10 writable = test
11
12 [group peng]
13 members = usr@pc1
14 writable = peng
usr@pc1:~/pptest/gitosis-admin$ git push
这个时候在bobo@bobo的终端还是不能git clone,还需要拷贝它的公钥到相应的目录,然后提交
usr@pc1:~/pptest/gitosis-admin/keydir$ scp usr@pc2:~/.ssh/id_rsa.pub . ============》拷贝密
usr@pc1:~$ ls
usr@pc1:usr@pc1:~$sr@pc1:usr@pc1:usr@pc1:usr@pc1:usr@pc1:~/pptest/gitosis-admin/keydir$ mv id_rsa.pub
[email protected] ============》修改公钥的名字,与gitosis.conf 中的命名相符合