
Git是一个分布式版本控制软件,原来是linux内核开发者Linus Torvalds为了更好地管理linux内核开发而创立的。发展至今,Git已经成为了一个相当好用的版本管理工具。相比于SVN,如果想要保存一些微小的修改也必须得提交服务器保存才可以,这样使服务器的版本号过多,而Git解决了这个问题,一些小的修改只在本地提交即可,只需最后修改完成后再提交服务器。正是由于这样的便捷性,现在越来越多的社区项目都开始使用Git来取代SVN之类较为传统的版本管理工具进行开发。 。
使用CentOS搭建Git服务器是一件比较轻松的事儿,本次折腾主要涉及git, gitosis, gitweb的安装配置。其中,gitosis和gitweb是两种比较常用的方式,gitosis是以SSH方式访问和管理git, gitweb是通过http的方式访问和管理。利用这些工具即可满足Git服务器的基本功能。此外比较好的一点是,Git的管理工具几乎不会给服务器带来较大的性能压力。下面正式开始我们的Git安装配置记录。
一、安装Git
yum install git
然后进行配置:
useradd --home /home/git git
passwd git
git config --global user.name "zwh"
git config --global user.email "admin@hellozwh.com"
设置默认将会保存在~/.gitconfig文件中。
此时,Git的功能就已经可以使用了。
二、安装gitosis
在安装之前,可以看一下gitosis的实现原理:
http://geeklu.com/2012/10/gitosis/
先切换回root权限。
su root
并先安装python-setuptool
yum install python-setuptools
然后开始安装gitosis,值得注意的是gitosis的安装程序本身就是由git管理的,需要使用git来获取。这里在/tmp目录下进行相关的安装操作:
cd /tmp
git clone https://github.com/res0nat0r/gitosis.git
接下来进入下载的gitosis版本库进行安装:
cd gitosis
python setup.py install
安装完成后,便进入对gitosis的设置阶段。由于gitosis需要通过SSH进行管理,所以需要创建SSH密钥对,并将公钥放在服务器端,私钥放在客户端。一般的流程是客户端创建完密钥后,将公钥传到服务器上生效。不过,偷懒的话直接在服务器上操作问题也不大。
切换到git用户并建立文件夹.ssh:
su git
mkdir /home/git/.ssh
一定记得,在客户机上生成公钥,上传到服务器,或者在服务器上生成,下载到客户机。
进入~/.ssh目录并使用ssh-keygen生成公钥:
cd /home/git/.ssh
ssh-keygen -t rsa
注意不能忘记私钥的密码。默认会生成~/.ssh/id_rsa.pub公钥文件。
有了密钥以后便可初始化gitosis,使gitosis获得对Git的管理权限:
gitosis-init < /home/git/.ssh/id_rsa.pub
初始化之后,会在/home/git/repositories创建gitosis-admin.git项目,可以通过维护这个项目来对gitosis进行配置。
除此以外,还需要对gitosis-admin.git/hooks/post-update目录赋上特殊权限:
chmod u+x /home/git/repositories/gitosis-admin.git/hooks/post-update
至此,服务器端的gitosys配置就完成了。
返回root用户,并创建项目库
su root
mkdir /home/git/repositories/zwh.git
cd /home/git/repositories/zwh.git
git init --bare
git clone git@serverip:repositories/zwh.git
切换到项目目录,并进行初始化
至此,一个初始的空项目版本库就配置完成了,可以向库中推送我们的代码库内容了。
Counting objects: 9, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 506 bytes, done.
Total 5 (delta 2), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objects
fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit



- nodejs安装Express错误汇总
- 阿里云 ECS smtp.exmail.qq.com 25 smtp邮件端口不通
- emlog rss.php访问报错【This page contains the following errors】
- npm 如何下载指定版本的组件
- vue 打包为app
- socket.io中emit和on的用法
- git pull 出错 fatal: Could not read from remote repository.Please make sure you have the correct access rights.and the repository exists.
- 如何通过养博客增加网站的外部链接
- 在XAMPP上建立多个域名的站点
- WebStorm 2017.1.3 Web前端开发神器
本文地址:https://blog.hellozwh.com/?post=3
版权声明:若无注明,本文皆为“起点终站”原创,转载请保留文章出处。


