Windows下git工具msysGit使用以及Git server初始化html
Windows下git工具,这里选择msysGit,版本为msysGit-netinstall-1.8.1.2-preview20130201。由于Git自己是运行在Linux下的,因此要想在Windows环境下使用,必须构建一个与Linux同样的虚拟环境。msysgit是 Git 版本控制系统在 Windows 下的版本,msysGit 做为 Window 平台下的原生程序。因此每个要链接Git server的windows客户端必需要在本地windows下安装msysGit。linux
一、Windows下安装msysGitgit
安装过程很是简单,确认安装选择盘符以后,会跳到以下开始初始化本地git环境:windows
初始化过程完成以后,就会出现于linux同样的命令行,以下:ssh
若是安装完以后,命令行窗口没有跳出来,请到安装目录下点击msys.bat,如F:/msysGit/msys.bat。工具
二、生成SSH Keypost
在本地客户端经过命令行直接生产SSH Key,测试
$ ssh-keygen -t rsaspa
因为我这里已经生成了,因此这里提示这个密钥已经存在!此时会在~/.ssh/下生成两个密钥id_rsa,id_rsa.pub命令行
id_rsa,私钥
id_rsa.pub 公钥,这个要保存Git server上,做为访问Git server的权限。
三、初始化管理员,并启动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配置完成
四、从Git server上clone版本库到本地
接下来就是在客户端远程访问版本库,在windows下开启msysGit,进入命令窗口
加入想把版本库存在本地f盘,以下:
$ cd /f
$ git clone git@192.168.10.49:gitosis-admin.git //在本地f盘下能够看到gitosis-admin文件目录
如上显示,表示clone完成!
五、测试
在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
六、问题
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