其实严格意义上来讲,在git中是不存在所谓的服务器的,本来就是个分布式的架构,谁都可以是服务器,也都可以是客户端,而这也正是git和其他版本控制软件如SVN所不同的地方,但是在做开发的时候,我们依然希望有一台专门的机器,让大家把代码都同步到这台机器上去,所以就认为这台机器为服务器,所以本文所说的服务器,其实也就是客户端的建立,外加上一个git web,方便大家直接在浏览器里观看。
安装git软件
apt-get install git-core 所依赖的其他库就交给ubuntu自己去解决吧,这句就足够了。
git服务器的无密码push
这步其实不是必须的,只是我们在push代码到服务器上的时候,可以不必输入密码,一来方便,二来也避免了把密码告诉使用服务器的每个人。
在需要push代码的机器上执行
ssh-keygen -t rsa
执行过程中会问一些问题如生成密钥文件的名字什么的,用默认的就可以了,而且推荐使用默认的。因为在执行git push命令时,会默认找到 ~/.ssh/id_rsa,如果是其他文件名的话,就需要自行指定了,具体的命令选项请自行寻找。
将生成的id_rsa存放于~/.ssh目录下,id_rsa.pub拷贝到git服务器上,scp或者U盘之类的都无所谓。
git服务器的设置
推荐建立一个专门的git帐户,方便于管理和权限控制。
在root下执行adduser git
为git设定密码 passwd git
如果在刚才有把id_rsa.pub拷贝到服务器上来,执行下一步,否则略过。
cat id_rsa.pub >> /home/git/.ssh/autoorized_keys, 不存在的目录和文件自行手工建立。
如果需要更细粒度的权限管理,推荐安装 gitosis 或者 gitolite,博主本人只在小组内部开发,就不去做这个设定了。
gitweb的安装
gitweb方便了大家及时查阅工程相关近况,而且直接在浏览器里查看,相当直观,推荐安装。
安装apache2 apt-get install apache2
安装gitweb apt-get install gitweb
运行命令后,相关的配置都会被自行设定好,gitweb相关的有
/var/www/gitweb /etc/gitweb.conf
修改/etc/gitweb.conf中 $projectroot="xxxxxx"; xxxx替换成git帐号的主目录 /home/git,
在/home/git目录下建一个工程进行测试
mkdir test.git
cd test.git
git init
用浏览器打开 http://xxx.xxx.xxx.xxx/gitweb
很简单是不是?