SVN是集中式管理版本控制,Git分布式版本控制,相对来说,Git更加的灵活一些。现在N多做APP研发的都采用了Git来管理代码仓库。
github就是这样一个平台,提供代码的管理。但是很多技术公司,还是希望使用自己的Git服务器!
网路上有很多教程,但是都不太详细,多半都是抄来抄去。
我们这里安装的是 git-2.11.2.tar.gz 版本,记得去官方网站下载!
第一步,先安装依赖包:
yum -y install gcc gcc-c++ make automake autoconf libtool zlib-devel perl-CPAN gettext gettext-devel openssl-devel expat-devel curl-devel perl-devel perl-ExtUtils-MakeMaker
具体这些包都是干什么用的,我也不太清楚,你们自己百度吧,或许某些包是不需要安装的。
第二步,安装 Git 服务器端:注意我的安装位置:/data/git 目录下。我把 git-2.11.2.tar.gz 上传到了/data/ide目录下。
mkdir /data/git
cd /data/ide
tar -zxvf git-2.11.2.tar.gz
cd git-2.11.2
make prefix=/data/git all
make prefix=/data/git install
第三步,把Git命令加入到环境变量中,这样我们就可以在任何目录下,都可以执行Git命令,注意路径啊。
echo "export PATH=$PATH:/data/git/bin" >> /etc/bashrc
source /etc/bashrc
git --version
git version 2.11.2
我在这里执行了版本命令,显示是 2.11.2版本,这个说明,我安装成功了。
第四步,我们使用Git命令配置一下
git config --global user.name "your name"
git config --global user.email "your name@xxxx.com"
git config --list
我们设置了您的name和email,这个根据自身情况设置就行了。
第五步, 创建一个git用户,并给这个用户创建SSH秘钥目录,git用户的名称随意,尽量不要用"git"
groupadd git_xxx
useradd -g git_xxx git_xxx
passwd git_xxx
XXXXXXXXXXXX // 密码没有实质意义,因为我们不使用密码登陆, 但还是要复杂一些吧。
cd /home/git_xxx // 每个账号都会在home下有个同名目录,这个大家都应该清楚。
mkdir .ssh // 这个是目录,有点啊,不要去掉啊
cd .ssh
vi authorized_keys // SSH访问权限文件, 里面存放客户端提交的公钥,稍后讲解。
:wq
chown git_xxx:git_xxx /home/git_xxx/.ssh
chown git_xxx:git_xxx /home/git_xxx/.ssh/authorized_keys
上面的内容,需要大家仔细注意,创建git用户后,还要到该用户目录下创建秘钥文件,并将秘钥文件归属给创建的git用户。
第六步,出于安全考虑,你可以用 Git 自带的 git-shell 工具限制 git 用户的活动范围。这可以通过编辑 /etc/passwd 文件完成。
vi /etc/passwd
git_xxx:x:500:500::/home/git_xxx:/bin/bash
改为:
git_xxx:x:500:500::/home/git_xxx:/data/git/bin/git-shell
注意啊,改动的内容其实就是后面的路径而已。
现在 git_xxx 用户只能用 ssh 连接来推送和获取 Git 仓库,而不能直接使用服务器的 shell。尝试普通 ssh 登录的话,会被拒绝登录。
第七步,Git服务器打开RSA认证,解开注释即可。
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /home/git_xxx/.ssh/authorized_keys
service sshd restart
Git的仓库地址有两种方式:
一种是SSH连接方式,形式为:git@xxx.com:repertory/project.git
一种是HTTPS形式, 形式为: https://xxx.com/repertory/project.git
这两种仓库地址使用的认证方式也不一样。对于SSH连接,使用非对称公钥认证方法;对于HTTP连接,使用帐号密码认证方式。
这些大家都明白了吧,我们使用第一种方式SSH方式,此方式需要秘钥文件的,不了解的朋友,自己百度吧。
第八步, 创建Git项目仓库并初始化
mkdir /data/repertory
cd /data/repertory
git init --bare test.git
chown -R git_xxx:git_xxx test.git
上面的脚步很清楚,我在/data/repertory目录下创建了 test.git 的仓库,那么他的访问形式如下:
git_xxx@191.168.1.88:/data/repertory/test.git
看清楚了,访问的形式就是 git用户@IP地址:仓库目录,简单吧。
第九步,将客户端提交上来的 公钥文件 id_rsa.pub 加入到 /home/git_xxx/.ssh/authorized_keys文件里,一行一个。
cd /home/git_xxx // 我把公钥文件上传到了这个目录
cat ./id_rsa.pub >> ./.ssh/authorized_keys
到这里大家都很清楚了,客户端通过 秘钥文件,就能直接访问代码仓库了,而不是通过账号密码登陆的方式。那么客户端的秘钥文件如何生成呢?
话题转移到客户端,就是程序员开发的PC电脑,以Win7 64位为例,我们需要安装Git客户端:Git-2.11.1-64-bit.exe, 记得去官网下载喽。
安装这个东西后,就会有一个 git-bash.exe 的窗口以供操作,跟Dos黑窗口一样,用于执行git命令的。
$ git config --global user.name "your name"
$ git config --global user.email "your name@xxxx.cn"
$ ssh-keygen -t rsa -C "your name@xxxx.cn"
上面的前两行大家都清楚,就是配置自己的名称和邮件,跟服务器端是一个道理。
第三行就是生成秘钥文件,中间需要交互(设置秘钥文件密码),一律回车即可(密码为空)。
秘钥文件生成后,它会提示你文件的目录,一般情况下是:C:\Users\PC Name\.ssh目录下。
就是你PC电脑用户下的.ssh目录下,就有 id_rsa.pub, 就是公钥。
下一节,我们将一下如何使用 Android Studio链接咱们创建的远程代码仓库:git_xxx@191.168.1.88:/data/repertory/test.git