一、Git简介
Git是Linux创建人Linus Torvalds为了管理Linux 内核开发而开发的一个开源的分布式版本管理软件。它和SVN的区别主要有以下几点:
1、分布式
SVN是集中式,如果网络或服务器出了问题,将不能提交任何改动。而使用Git,则开发者可以随时提交代码到本地,即使网络或服务器出了故障,Git仍然能在本地正常工作,可以待之后再把改动一次性提交到服务器;
2、分支管理
对SVN来说,一个分支其实就是一个目录,占用空间较大。而Git使用文件差异化管理,即使开再多分支仍然是同一个目录,节约空间,而且在不同分支之间可以快速切换;
3、适用场景
相较来说,SVN适合做项目管理,而Git则更适合做代码管理;
二、服务器搭建步骤
要开始使用Git做代码管理,需要分别配置服务器和客户端。本文主要讲述如何配置Git服务器。以CentOS7.4服务器为例:
1、首先在服务器上安装Git;
yum install -y git
安装完成后,可以通过以下命令查看版本号。
git --version
2、创建git用户;
创建一个名为git的用户,用来运行git服务,同时创建git用户的主目录为/home/git。
useradd -d /home/git -m git
3、进入git用户目录,创建一个空的仓库test.git;
cd /home/git
git init --bare test.git
4、更改目录权限;
因为此时是以root身份登录的,则创建后默认权限都属于root,所以需要把test.git和所有子目录的owner都改为git,客户端pull和push才不会出现权限问题。
chown -R git:root test.git
5、禁用Git用户的shell登陆;
出于安全考虑,建议禁用shell登录,使git用户只能读写代码,不能shell登录。可以通过编辑 /etc/passwd 文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
此时客户端其实已经可以抓取Git仓库了,但每次都要输入用户名和密码,显然太麻烦了,所以使用密钥管理方式,避免每次重复输入密码。
6、创建密钥文件
在git用户的工作目录下创建.ssh目录,在.ssh目录下创建authorized_keys文件,并设置权限为600。
cd /home/git
mkdir .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
至此,Git服务器端基本配置完成,接下来请看下一篇:客户端配置。