Linux服务器配置之Git服务器搭建步骤:

一、配置环境

1、服务器:lCentOS 7.2(64位) + Git (version 1.8.3.1)
2、客户端:Windows 10 Pro(64位) + Git(version 2.11.0.windows.1)
3、服务器连接软件:Xshell 6

二、配置步骤

1、安装git 服务端
Linux作为服务器端系统,Windows作为客户端系统,分别安装Git
服务器端

[admin@ceontOS ~]$ su root                  #切换到root用户名
Password:                                   #输入root用户的密码
[root@ceontOS ~]# yum install -y git        #执行该命令进行Git安装
 
安装完后,查看Git版本
[root@ceontOS ~]# git --version
git version 1.8.3.1

客户端:
下载 Git for Windows,地址:https://git-for-windows.github.io/
安装完之后,可以使用 Git Bash 作为命令行客户端。
安装完之后,查看 Git 版本

$ git --version

git version 2.11.0.windows.1

 

Git客户端安装具体可参考:Git安装及SSH Key管理之Windows篇

 

2、服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码

 

[root@ceontOS ~]# cd /home                                  #进入/home/目录
[root@ceontOS home]# id git                                 #查看git用户是否存在
id: git: no such user                                       #提示git用户不存在
[root@ceontOS home]# useradd git   #创建git用户 (名字任意取)
3、服务器端创建 Git 仓库
 设置 mkdir -p home/git/fenlin88l.git 为 Git 仓库注:git  fenlin88l.git是自建目录  fenlin88l.git为仓库名
[root@ceontOS home]# cd git   #进入git用户目录
 [root@ceontOS git]# ls      #查看git用户目录下有哪些目录/文件
  fenlin88l.git

[root@ceontOS git ]# git init  ./fenlin88l.git    #这步很重要,初始化项目测试目录 或者 cd fenlin88l.git 然后 git init

   git init 会有工作区目录

   git --bare init 只有裸仓库,没有实际代码,只记录提交了那些文件

liunx搭建git仓库_客户端


Initialized empty Git repository in /home/git/fenlin88l.git/
[root@ceontOS git]#  ll      #查看fenlin88l.git项目文件夹的拥有者
 total 4
 drwxr-xr-x 3 root root 4096 Jan 13 13:08 fenlin88l.git    #拥有者是root用户名

liunx搭建git仓库_liunx搭建git仓库_02

[root@ceontOS git]# chown -R git:git fenlin88l.git/    #将拥有者改为git用户

liunx搭建git仓库_liunx搭建git仓库_03


[root@ceontOS git]# ll      #再次查看fenlin88l.git项目文件夹的拥有者

  #拥有者是git用户 如下      

liunx搭建git仓库_客户端_04

 注:

如果使用 git init初始化:

      

(1:在使用Git Push代码到数据仓库时,提示如下错误:

[remote rejected] master -> master (branch is currently checked out)

 

错误原型

remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsisten
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To git@192.168.1.X:/var/git.server/.../web
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'git@192.168.1.X:/home/git/fenlin88l.git/'

 

错误原因以及解决

 

这是由于git默认拒绝了push操作,需要进行设置,修改服务端的.git/config文件后面添加如下代码:(# 当前git项目下)

[receive]
denyCurrentBranch = ignore

(2:Linux Git代码提交自动更新到web目录

在git远端仓库的hooks目录下新建post-receive文件,输入如下内容:

#!/bin/sh
unset GIT_DIR
DeployPath="/home/git/fenlin88l.git/"  #web目录
cd $DeployPath
git reset --hard
echo  $DeployPath

保存后赋予可执行权限: chmod +x post-receive

 当客户端进行git push 操作时,代码将自动更新到web目录

4、客户端 clone 远程仓库

先在本地Windows系统上创建一个存放git项目的文件夹,例如我的设置在:【D:\git\fenlin88】

  

此处通过Git Bash来创建的,当然也可以手动创建该目录,然后进入该目录,启动Git Bash

#在桌面打开的git bash
 $ cd d:   #进入D盘
    
 $ mkdir git  #创建git文件夹
    
 $ cd git   / #进入git文件夹创建fenlin88文件夹

  

$ git clone  git@服务器公网IP地址:/home/git/fenlin88l.git    #IP地址后面跟冒号,冒号后面是刚才初始化的项目文件夹的绝对路径
![](http://upload-images.jianshu.io/upload_images/2267589-7bedba534bdc9f04.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
例:  git clone git@47.107.193.147:/home/git/fenlin88l.git

 

当第一次连接到目标 Git 服务器时会得到一个提示:

The authenticity of host '118.178.142.77 (118.178.142.77)' can't be established.
 ECDSA key fingerprint is SHA256:JwC9NxLIjBGqtLC2NUk8MulSc3XH3mM5AWMcFz0a5/8.
 Are you sure you want to continue connecting (yes/no)? yes选择 yes:
Warning: Permanently added '118.178.142.77' (ECDSA) to the list of known hosts.

 

此时 C:\Users\用户名\.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。

【说明】如果你的服务器没有配置SSH连接,那么按照正常情况会让你输入git用户的密码,输入正确后就能进行项目克隆了。