1、Windows下安装msysGit

安装过程非常简单,确认安装选择盘符之后,会跳到如下开始初始化本地git环境:

初始化过程完成之后,就会出现于linux一样的命令行,如下:

如果安装完之后,命令行窗口没有跳出来,请到安装目录下点击msys.bat,如F:/msysGit/msys.bat。

2、生成SSH Key

在本地客户端通过命令行直接生产SSH Key,

$ ssh-keygen -t rsa

由于我这里已经生成了,所以这里提示这个密钥已经存在!此时会在~/.ssh/下生成两个密钥id_rsa,id_rsa.pub

id_rsa,私钥

id_rsa.pub 公钥,这个要保存Git server上,作为访问Git server的权限。

3、初始化管理员,并启动Gitosis

在windows客户端,将公钥传输到远程的Git server上,如下:

通过命令在客户端上将公钥远程传输到线上

$ scp ~/.ssh/id_rsa.pub git@server:/tmp

此时在Git server的/tmp目录下应该就能看到这个公钥了。

在Git server上操作如下:

/tmp$ sudo chmod a+r ./id_rsa.pub//先给这个公钥所有权限

启动Gitosis命令,完成如下图:

/tmp$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub

启动Gitosis之后,初始化gitosis-admin.git库文件

此时去/home/git/repositories下可以看到gitosis-admin.git库文件,在gitosis-admin.git下可以看到相关内容如下:

权限控制在gitosis.conf,公钥SSH Key文件放在/home/git/repositories/gitosis-admin.git/gitosis-export/keydir下,以后所有的客户端用户的公钥都放在这个文件下

另外,给/home/git/repositories/gitosis-admin.git/hooks/post-update权限,如下:

$ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

到此管理员初始化完成,Git Server配置完成

4、从Git server上clone版本库到本地

接下来就是在客户端远程访问版本库,在windows下开启msysGit,进入命令窗口

加入想把版本库存在本地f盘,如下:

$ cd /f

$ git clone git@192.168.10.49:gitosis-admin.git//在本地f盘下可以看到gitosis-admin文件目录

如上显示,表示clone完成!

5、测试

在Git server上新建一个版本库如下:

$ su git

$ mkdir /home/git/repositories/hello.git

$ sudo chown -R git:git /home/git/repositories/hello.git

$ cd /home/git/repositories/hello.git

$ git --bare init

切换root用户操作

cat /home/git/repositories/gitosis-admin.git/gitosis.conf

新增访问版本hello的权限,编辑gitosis.conf文件,修改如下:

[gitosis]

[group gitosis-admin]
members = Administrator@CANDLE-PC
writable = gitosis-admin

[group developers]
members = Administrator@CANDLE-PC
writable = hello

初始化完成hello版本库。然后通过windows客户端msysGit进行clone,并提交文件如下:

git clone git@192.168.10.49:hello.git

完成版本clone。

测试提交文件,如下: 

【第一次提交】 

git add a.txt
git commit -a -m 'add a.txt'//第一次提交时,因为当前是一个空项目,commit后面跟一个参数-a,git commit -a 提交当前repos的所有的改变,否则会在git push origin master时报错
git push origin master

【第二次提交】commit不需要加参数-a

 git add a.txt

git commit -m 'add a.txt'

git push origin master

6、问题

A、clone的时候,报错:ERROR:gitosis.serve.main:Repository read access denied

解决方案:<1>可能是git的权限配置文件members = Administrator@CANDLE-PC,与/home/git/repositories/gitosis-admin.git/gitosis-export/keydir/Administrator@CANDLE-PC.pub这名字不一致,改成一致即可。

 <2>git clone路径问题,通常我们都是采用全路径,git clone git@192.168.1.100:/home/git/repositories/hello.git,这里访问可能报上名的错误,换成这样,直接访问库文件目录git clone git@192.168.1.100:hello.git 即可!

B、执行 git push origin master的时候,报错

error: src refspec master does not match any.

error: failed to push some refs to 'git@192.168.1.100:hello.git'

解决方案:第一次提交时,因为当前是一个空项目,commit后面跟一个参数-a,git commit -a 提交当前repos的所有的改变

【第一次提交】 

git add a.txt
git commit -a -m 'add a.txt'//第一次提交时,因为当前是一个空项目,commit后面跟一个参数-a,git commit -a 提交当前repos的所有的改变,否则会在git push origin master时报错
git push origin master

Copyright © 2014-2024 it689.com (京ICP备12032795号-2) 版权所有 Power by IT689