利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

佚名 2021-8-27 2,170 8/27

一般,我们编写项目,都会保留工程项目源代码。在“上个世纪”,一般使用U盘、硬盘等设备,进行备份,而现在,一般使用GitHub、Gitee等Git软件项目版本管理器。方便备份、管理工程版本。

如果是个人项目,或者是小型团队项目,不希望放到GitHubGitee这样的公共仓库包管理而让别人看到你的“工程空间“,那么你可以试试自己搭建Git服务器。本次教程教程,就教大家怎么在Lighthouse(轻量应用服务器)上搭建Git服务器

利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

为什么使用Lighthouse

使用Lighthouse主要的原因是:经济

同等情况下,Lighthouse相比CVM,主要有以下优点:

  • 价格更低
  • 配置更加方便
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

所以,Lighthouse十分适用于个人开发者小型团队。我们团队就是使用Lighthouse搭建Git同步日常项目。

而作为一名个人开发者,我推荐使用Linux系统作为服务器的操作系统。本文安装Git和项目初始化,使用的服务器也是腾讯云轻量应用服务器Debian 10发行版本Linux为主(同时会指点CentOS发行版本Linux的对应操作)。

安装Git

话不多说,我们直接开始。首先是连接服务器。方法很多,不再赘述,推荐使用的工具:

  • Powershell:Windows10(或Windows10以后的Windows用户)可以使用系统自带的Powershell进行远程SSH登录服务器。
  • Terminal:Linux和macOS用户可以使用系统自带的Terminal进行远程SSH登录服务器。

我这里已经使用Terminal连接服务器了:

利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

这个时候,我们使用软件包管理器安装Git:

# Debian/Ubuntu
sudo apt-get install git
# CentOS
sudo yum install git

你也可以使用Git源码,用gcc编译安装,但是……我一般是直接用软件包管理器安装Git。

安装之后,在远程SSH内输入git --version即可看到效果:

利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

配置Git

创建Git用户

一般来讲,我们会创建一个公共用户git用于管理仓库。

首先,我们用命令查看,之前是否一不小心创建过git用户:

cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

可以看到,腾讯云轻量应用服务器默认没有git用户所以,我们创建:

sudo adduser git
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

按提示设置密码和信息即可创建完成:

利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

之后,我们到/home目录下,即可看到新添加的git用户:

利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

到此,配置Git已经完成。接下来,我们看看具体如何使用。

仓库初始化

我们搭建好一个Git服务器后,需要初始化仓库;往往使用git init或git init –bare来初始化项目。但是,这两个的区别是什么呢?简单地说:

  • git init:用于本地项目初始化
  • git init –bare:用于Git服务器项目初始化

给大家稍微讲解一下:

Git init

通常,我们初始化本地仓库时,使用git init:建立一个标准的Git仓库

利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

这样的仓库初始化后,其项目目录为工作空间,其下的.git目录是版本控制器。

Git init –bare

通常,我们初始化远程服务器仓库时,使用git init –bare:建立一个“裸”的Git仓库。这样的仓库初始化后,其项目目录下就是标准仓库.git目录里的内容,没有工作空间。这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作(如:push、commit操作)。但是,你依旧可以使用git show命令查看提交内容:

创建仓库

相信看完上述描述,大家已经服务器上应该用Git init –bare了,我们来实际演示一下。

进入git用户家目录内(/home/git),创建一个mySource文件夹,里面用来存git仓库:

# 切换为git用户
sudo su git
# 切换环境为/home/git内 
cd ~ 
# 创建mySource文件夹 
mkdir mySource
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

之后,我们进入mySource文件夹,并初始化一个叫imagehost.git的git仓库:

# 进入mySource文件夹
cd mySource
# 初始化叫imagehost.git的仓库
sudo git init --bare imagehost.git
之后会多一个项目文件夹:
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

这个时候,我们imagehost仓库就创建好了。

使用仓库

本地同步仓库

刚刚我们已经创建了imagehost仓库,本地也需要安装Git。这里不再赘述。在安装好后,以下方法二选一:

  • powershellterminal同步仓库到本地。
  • 使用GitHub Desktop进行可视化同步仓库到本地。

本次就演示,使用Terminal同步仓库到本地。

# 同步本地仓库,server-IP为服务器IP地址
git clone git@server-IP:/home/mySource/imagehost.git
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器
之后,本地就出现这个仓库了:
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

添加&推送

之后,我们对本地仓库加入项目代码即可(本文使用图片代替):

利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

之后,进行推送:

# 添加所有文件
git add 
# 创建commit
git commit -m "init".
# 推送到服务器主分支
git push origin HEAD
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

之后,你可以使用Git命令查看远程分支版本。

Git工作空间

上文说到,服务器上使用git init –bare创建的“裸“仓库,是没有工作空间的,什么是工作空间的,举几个例子:

  • GitHub的仓库详情就是工作空间
  • 本地仓库内详情就是工作空间
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器
利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

那么,“裸“仓库,怎么看到工作空间呢?

hook使用

Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 简单地说,hook就是一些在Git特点动作时候,触发的事件。具体可以查看:Git官方中文文档

我们可以使用post-receive钩子,来展示我们的工作空间。

post-receive

我们要在裸仓库内,看到用户提交的工作空间很简单。只需要创建/编写post-receivek即可:

# 当前在服务器裸仓库内
cd hooks
# 创建并编辑post-receive
vim post-receive

输入内容:

#!/bin/sh
git --work-tree=#工作空间# --git-dir=#Git仓库地址# checkout -f

比如:其中:

  • 工作空间:服务器上空目录地址,git用户需要有读写权限
  • Git仓库地址:服务器上本仓库地址。

之后,进行提取(赋予执行权限):

chmod +x post-receive

之后,用户push提交后,–work-tree参数定义的工作空间就可以看到用户提交的具体内容

利用腾讯云轻量应用服务器搭建自己的Git仓库服务器

总结

在Lighthouse上搭建Git服务器就是这么简单,非常适合个人开发者和小型团队嗷。甚至还可以创建SSH配对密钥添加到authorized_keys,用于免密推送和下载。

另外,有些用户可能会想搭建Gitlab,我认为个人或者小型团队是没必要搭建这么庞大的Git服务平台(中型团队或者企业再搭建吧……)。

- THE END -

佚名

8月27日15:53

最后修改:2021年8月27日
3

共有 0 条评论