git仓库: 1.1.0 centos6搭建git本地服务器



0. 创建本地git服务器之前

1. 准备git服务器

假设我们搭建的是centos 6.5服务器

# 安装git
yum install git

# 增加git用户
useradd git
passwd git

# 目录初始化
mkdir -p /data/git/test.git
cd /data/git/test.git
git --bare init
# --bare参数会将原本初始化在".git"目录下的文件初始化在当前目录下,形成裸仓库,这样的目的是禁止用户在此目录下进行git常规操作,以确保此目录只是作为git服务端仓库使用。
chown -R git:git /data/git

# 安全配置
# 将git用户的shell更改为git-shell,这样用户就只可以通过ssh来进行git操作,而不能进行其他操作了
vi /etc/passwd
*************************
git:x:501:503::/home/git:/usr/bin/git-shell
*************************
# 配置之后,其他客户端尝试ssh时会有以下提示
ssh git@192.168.1.105
Last login: Sat Jun  4 09:06:15 2016 from 192.168.1.249
fatal: What do you think I am? A shell?
Connection to 192.168.1.105 closed.

2. 项目主管角色(mac)

我们假设项目主管使用的是mac客户端

# 若ssh密钥不存在时,创建密钥
ssh-keygen

# 拷贝公钥信息到git服务器上去
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDDCtzFiZ3rhRFZLwl0z3Cy1GOWzuxkzJ5aKQFmkIVZ/HA+RC+tfgfFItOAmQDtJrBc8TXN************XGto+XxMGWdqnibcO9/7a7uhy4kh3bFyDFSwS228OlcxIuul1zNvBFPnOQqI7Mh0nZBdA2cYENOalPOw== opsuser@opsuser-MBP.local
# 公钥信息为一行,可将此信息拷贝到git服务器"/home/git/.ssh/authorized_keys"中,每个用户的公钥占用一行
scp .ssh/id_rsa.pub root@192.168.1.105:/tmp/id_rsa.supervisor.pub

# git服务器上的操作
=====================================================
cd /home/git
mkdir .ssh
touch .ssh/authorized_keys
chown -R git:git .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
cat /tmp/id_rsa.supervisor.pub >> .ssh/authorized_keys
=====================================================

# 初始化git项目
mkdir myproject
cd myproject
git init
touch README.md
echo "test project" >> README.md
git add README.md
git commit -m 'initial commit'
git remote add origin git@192.168.1.105:/data/git/test.git
git push origin master

3. 普通开发人员角色(win)

普通开发人员在等待主管将项目初始化之后,就可以clone项目并编辑自己的分支了,假设其用的是windows系统

  1. 下载git for windows客户端
  2. 打开git bash客户端
  3. 执行下面命令 bash ssh-keygen.exe Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/opsuser.IG/.ssh/id_rsa): Created directory '/c/Users/opsuser.IG/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/opsuser.IG/.ssh/id_rsa. Your public key has been saved in /c/Users/opsuser.IG/.ssh/id_rsa.pub. The key fingerprint is: SHA256:JN/yNAhk4307bT/SH8HfnnlLcTjUjdmxODH3ts7NqN0 opsuser@opsuser The key\'s randomart image is: +---[RSA 2048]----+ | + o o | | + o ===| | + o . o+.*| | = + o .oo.| | S * o o=.| | + + oo+B| | . . ===| | +.==| | . .+E| +----[SHA256]-----+ 4. 将id_rsa.pub的内容也拷贝到git服务器的authorized_keys文件中(另起一行) 5. 打开git bash客户端 bash git clone git@192.168.1.105:/data/git/test.git Cloning into 'test'... The authenticity of host '192.168.1.105 (192.168.1.105)' can't be established. RSA key fingerprint is SHA256:ISP93qigltNRT1V8ntMTEf9AVWz0lzX6KxjZJd7SAUY. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.105' (RSA) to the list of known hosts. remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. Checking connectivity... done.