提示:搭建git服务器前请先学会git的主要的命令,以及对ssh的理解。
服务端搭建
1. 首先创建一个新账户(如果打算将当前账户作为服务器账户的话可以不新建):
系统偏好设置 -> 用户与群组,添加一个新账户,账户名就叫git,作为服务器的账户,普通权限即可。
2. 切换到刚刚新建的服务器账户mygit, 下载gitosis终端执行命令:
- git clone git://github.com/res0nat0r/gitosis.git
- cd gitosis
- python setup.py install
用python脚本安装setup.py
成功安装后最后一行会有如下提示:
Finished processing dependencies for gitosis==0.2
3. 切换客户端创建公钥
ssh小知识:只有将自己的公钥提供给服务器账户,才能获得服务器远程登录的权限。
同一台机子上执行以下命令来切换到客户端账户
- su Jone
4. 生成公钥命令:
- ssh-keygen -t rsa
一路回车即可
生成.ssh文件,通过ls查看当前目录,咦?怎么木有?
别急因为.ssh是隐藏文件,通过ls -la 命令就可以查看所有隐藏的文件了
cd进入.ssh文件
将id.rsa.pub复制到服务器账户的临时目录tmp命令(bash):
cp id_rsa.pub /tmp/Jone.pub
拷贝时修改名字
exit退出当前账户
5. 回到服务器账户,同一台机器终端执行命令:
sudo -H -u git gitosis-init < /tmp/JoneMacPro.local.pub
替换以刚刚复制到服务器/tmp的公钥—(注意设置公钥名字跟你的Mac账户名称相同便于区分)如下图所示:
- Initialized empty Git repository in /Users/git/repositories/gitosis-admin.git/
- Reinitialized existing Git repository in /Users/git/repositories/gitosis-admin.git/
初始化成功后会有以上提示
6.这时服务器账户下就会将该客户端认证为可信任的,在git的home目录下会有记录,执行如下命令
- cd ~ (回到根目录)
- cd .ssh
- ls
可查看到authorized_keys文件
7.修改post-update的权限,便于客户端提交
- sudo chmod 755 /Users/git/repositories//gitosis-admin.git/hooks/post-update
8.最后修改服务器账号mygit账户的PATH路径如下四条命令:
- touch ~/.bashrc
- echo PATH=/usr/local/bin:/usr/local/git/bin:\$PATH > .bashrc
- echo export PATH >> .bashrc
- cat .bashrc
执行前三步命令,悄无声息,恭喜你。那是好事!执行之后一行命令出现以下两行代表修改完成
- PATH=/usr/local/bin:/usr/local/git/bin:$PATH
- export PATH
大功告成!git服务器搭建完成!
客户端测试
1. 进入客户端账户,使用如下命令测试是否连通服务器
- ssh git@192.168.1.102
192.168.1.102此乃你的服务端账户mygit的IP地址,可以通过 系统设置 ->共享 -> 远程登录来查看
2. 从服务端复制资源到本地,在客户端执行如下命令
git clone git@192.168.1.101:repositories/gitosis-admin.git
如果这个步骤出错
bash: gitosis-serve: command not found
使用命令 which gitosis-serve找到文件夹路径将该文件放到git账户的.ssh文件夹下
3.克隆成功之后哦进入gitosis-admin目录
进入文件夹打开gitosis.conf文件
- [gitosis]
- [group gitosis-admin]
- members = boy15174
- writable = gitosis-admin
members是此仓库的成员,只有成员才有读写权限,这是你的账户名
- members = JoneMacPro.local Ben
writable代表仓库的名称
以后修改都可以直接在本地进行编辑,然后push到服务器
提示:gitosis-admin 文件是仓库里面的特殊文件,就像是其他文件的管理员,并且任然可以克隆到本地。
4. 现在我们创建一个普通test文件,如图
- [group test]
- members = boy15174
- writable = test
然后保存退出
执行git push命令上传
5. 切换到服务器账户,终端进入repositories目录,然后执行:
- mkdir test.git
- cd test.git
- git --bare init
创建一个test.git目录,进入目录初始化一个git的镜像目录。
6.切换客户端通过命令:
git clone git@192.168.1.101:repositories/test.git
如果把test文件成功的clone到本地,那就代表测试成功了。现在可以在客户端操起git锋利的命令刀尽情的挥舞吧!