Git开源的分布式版本控制器

255 阅读2分钟

Git 分布式版本控制器

一、简介

  Git是一个免费且开源的分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。Git易于学习, 占地面积小,具有闪电般的快速性能。它具有诸如Subversion,CVS,Perforce和ClearCase之类的SCM工具,并且具有廉价的本地分支,方便的暂存区域和 多个工作流等功能。

二、安装(Linux)

# git --version    查看是否已经安装git服务?
git version 1.8.3.1   说明已经安装git服务
# git remove git    删除原先的git服务

# yum info git   查看yum源仓库的git信息
...
已加载插件:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
 * base: mirror.bit.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
可安装的软件包
名称    :git
架构    :x86_64
版本    :1.8.3.1
...
# yum install git   安装git
...
已安装:
  git.x86_64 0:1.8.3.1-20.el7                                                                       
  
作为依赖被安装:
  perl-Error.noarch 1:0.17020-2.el7                      perl-Git.noarch 0:1.8.3.1-20.el7                      perl-TermReadKey.x86_64 0:2.30-20.el7                      rsync.x86_64 0:3.1.2-6.el7_6.1                     

完毕!

三、搭建git中央仓库

  1. 创建git用户用于进行git服务管理操作
# groupadd git  //创建git用户组
# useradd git -g git    //创建git用户
# passwd git    //为git用户设定密码
  1. 限制git账户登录(该账户不应被用于远程登陆)
# vi /etc/passwd //打开配置文件
原始值:git:x:1000:1000::/home/git:/bin/bash
修改为:git:x:1000:1000::/home/git:/usr/bin/git-shell
  1. 开启SSH RSA 验证

此处有坑,详解blog.csdn.net/qq_37912061…

因为关闭git账户的远程登录,因此需要启动ssh的rsa验证以确保可以使用该种方式连接到git服务,修改如下配置
# vi /etc/ssh/sshd_config   //打开配置文件
PubkeyAuthentication yes //这个选项默认是注释的且默认开启的。去掉注释即可
<!--  修改完之后, 重启SSH服务 -->
# service sshd restart
  1. 创建git中央仓库
<!-- 进入目录 -->
# cd /home/git
<!-- 创建 Git 仓库name为仓库名 -->
# git init --bare name.git
建立一个共享的仓库,只能接受push/pull ,不能本地commit
<!-- 创建目录 -->
# mkdir .ssh
<!-- 进入目录 -->
# cd .ssh
<!-- 创建文件 -->
# touch authorized_keys
#打开客户端中的 “id_rsa.pub” 文件,将该文件中的全部内容拷贝至服务端中的 “authorized_keys” 文件中。
<!-- 指定为 Git 账户 -->
# chown -R git.git name.git
# chown -R git.git /home/git/.ssh/
  1. 客户端 验证 Git Server
<!-- 在客户端克隆中央仓库 ip:git服务端ip地址 name:仓库名 -->
$ git clone git@ip:/home/git/name.git
Cloning into 'name'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.