linux搭建git服务器并使用

£可爱£侵袭症+ 提交于 2019-12-18 02:57:50

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 只有裸仓库,没有实际代码,只记录提交了那些文件


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用户名


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

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

      

 注:

如果使用 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用户的密码,输入正确后就能进行项目克隆了。

![](http://upload-images.jianshu.io/upload_images/2267589-776f44a088bba653.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!