前言
之前各用各的GitHub,因工作需要,不得不在局域网内架设一个GIT服务器供程序猿协作开发,在这里记录下我的安装过程。
1.先在服务器端配置环境
直接用yum 安装:
yum install gettext-devel
yum install openssl-devel
yum install perl-devel
yum install python
yum installpython-setuptools
下面的我好像没装也可以用,可高手们说一起装上!!!
yum install curl-devel
yum install expat-devel
yum install zlib-devel
可以串起来一起装,没被墙掉没什么问题的!
2.在服务器端安装GIT
yum install git
git --version //可以显示版本号表示安装成功了!
3.在服务器端安装gitosis
现在可以用git了
[root@w_centos ~]#git clone git://github.com/res0nat0r/gitosis.git //下载
cd gitosis //进入目录
[root@w_centos gitosis]#python setup.py install //安装
//显示Finished processing dependencies for gitosis==0.2表示安装成功!
4.在客户端(Windows工作机)上安装git,再生成密钥并上传到服务器端
生成密钥:
$ssh-keygen -t rsa -C “邮箱地址”
在C:\Users\用户名\.ssh目录下找到id_rsa.pub并上传到服务器端的根目录/tmp文件夹中
5.在服务器端生成git账户,用git账户初始化gitosis
创建一个git账户作为git版本管理专用:
[root@w_centos ~]#useradd -c 'GIT版本管理专用账户' -m -d /home/git -s /bin/bash git
设置git账户密码:
[root@w_centos ~]#passwd git
转换到 git用户
su - git
导入第4步上传的密钥到gitosis
gitosis-init < /tmp/id_rsa.pub
显示以下信息表示成功
#Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
#Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
6.在客户端管理服务器端的GIT项目
随便找个位置右键选Git Bash Here
输入:git clone git@10.10.10.100:gitosis-admin.git //10.10.10.100为服务端IP
这样就可以把服务端的项目配置clone回来
客户端工作机的密钥在keydir目录中,有新的工作机添加到这个目录下
在gitosis.conf的结尾添加项目
[group test-git] # 具有写权限的组名称
writable = test-git # 该组可写的项目名称
members = xx@xxx.com aa@aaa.com #该组的成员(密钥用户名) 多个用户协同开发时,以空格分隔
# 如果要增加只读的组 参考如下
# [group test-git-readnoly] # 具有都权限的组名称
# readonly = test-git # 该组只读的项目名称
# members = xx@xxx.com # 该组的成员
#提交修改
git add .
git commit -a -m "添加项目"
git push
7.提交项目
新建一个test-git目录
git init
放些文件到这个文件夹在
git commit -a -m "init test-git"
git remote add origin git@10.10.10.100:test-git.git
git push origin master
成功!!!
无法添加协同开发用户密钥时注意以下几点:
1.配置 本地环境
git config --global user.name "Name"
git config --global user.email "邮箱"
git config -l # 查看配置
2. 不能以数字开头的名称如33333@qq.com
3.push 的时候只能用 git push,如果git push origin master这样的话不会添加到authorized_keys文件中去。
4.Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果 是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:
$ git config --global core.autocrlf true
Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:
$ git config --global core.autocrlf input
这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。
如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:
$ git config --global core.autocrlf false
5.用"写字板"工具编辑,"记事本"有可能会出错,出现换行要注意。
6.有些系统(中文用户账号)生成的密钥无法添加进去
解决办法:
手动添加 $ cat /tmp/xxx@xxx.com.pub >> ~/.ssh/authorized_keys
参考:
<a target=_blank href="http://blog.sina.com.cn/s/blog_904dee7f0101gait.html">http://blog.sina.com.cn/s/blog_904dee7f0101gait.html</a>