在Ubuntu环境下搭建小型化Git服务器

2024-01-29 18:36

本文主要是介绍在Ubuntu环境下搭建小型化Git服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于我们写代码的人来说,git再熟悉不过了,也必不可少,比如像我,在单位写了点东西,晚上回到家有时还要捯饬一下,但电脑带来带去的也麻烦不是,有了私有的Git库,就方便多了,随时随地都能同步代码,方便的不只一点点。

今天我说来讲讲如何在Ubuntu22.04的环境下搭建我们私有的Git存储库,这里给大家介绍一个库 gitolite ,不是一般的好用啊, 是相当的好用。下面开始介绍它。

安装和设置

服务器要求
  • 任何 UNIX 系统
  • SH
  • git 1.6.6 或更高版本
  • Perl 5.8.8 或更高版本
  • OpenSSH 5.0 或更高版本

用于托管存储库的专用用户 ID(在本文档中,我们假设它是 “git”,但它可以是任何东西;相应地替换)

此用户 ID 当前没有任何基于 SSH 公钥的访问权,理想情况下,此用户 ID 只能通过某些 “su - git” 进行 shell 访问 同一服务器上的其他用户 ID(这确保了 SSH 的混淆!

安装git、ssh服务及ssh终端
sudo apt-get install git  openssh-server openssh-client -y

安装Pythonsetuptoolsgitosis,由于gitosis要依赖python的一些工具,所以要先安装相关依赖:

sudo apt-get install python3 python3-setuptools -y
新建用户
  • 新建只能在控制台下登录的用户

切换为root用户为了获取创建用户的权限

peng@ubuntu:~$ sudo su
  • 添加一个新用户(如用户名为git)
root@ubuntu:/home/peng# useradd git
  • 为该用户设定登录密码
root@ubuntu:/home/peng# passwd git

关于用户的相关命令:

sudo passwd     //可直接设置root的初始密码或者修改当前用户的密码su root         //录入root密码后 可切换到root用户su             //录入root密码后 可切换到root用户su user         //从root用户切换到普通用户不输入密码就可直接切换

安装gitolite

安装步骤

首先,准备 ssh 密钥:

  • 登录服务器上的“git”
  • 确保为空或不存在~/.ssh/authorized_keys
  • 确保工作站中的 SSH 公钥已复制为 $HOME/YourName.pub

接下来,通过运行以下命令安装 gitolite:
安装前的相关准备:

## 备注:这一步不是必须的,只是备注一下,删除已经存在的用户,连同它的home文件一同删除
sudo deluser --remove-home git sudo adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
## 删除密码,不知道什么原因,创建了密码用户为什么切换的时候还要输入密码。只能再删除密码OK
sudo passwd -d git 

git用户创建完后不要有任何操作,要保证:~/.ssh/authorized_keys 这个目录为空或不存在。最好是不存在。

安装:

su - git
git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin## 将管理员客户端的id_rsa.pub密钥用scp命令复制到$HOME目录下备用
gitolite setup -pk YourName.pub## 如果“bin"目录不在”PATH"中,则执行下面这条语句:
$HOME/bin/gitolite setup -pk YourName.pub
添加用户和存储库

请勿在服务器上手动添加新的存储库或用户。Gitolite 用户, 存储库和访问规则是通过对特殊存储库进行更改来维护的 称为“gitolite-admin”并将这些更改推送到服务器。
要管理 gitolite 安装,首先在 工作站(如果您尚未这样做):

git clone git@host:gitolite-admin

通过对gitolite-admin库的操作即可实现对用户权限的控制。

访问规则示例

Gitolite 的访问规则非常强大。下面是一个简单的示例:

repo fooRW+                     =   alice-   master              =   bob-   refs/tags/v[0-9]    =   bobRW                      =   bobRW  refs/tags/v[0-9]    =   carolR                       =   dave

以下是这些示例规则的内容:

  • Alice 可以对任何分支或标签执行任何操作 – 创建、推送、 删除、倒带/覆盖等。
  • bob 可以创建或快进推送任何名称为 不要以“master”开头,并创建任何名称不以“master”开头的标签 以“V”+数字开头。
  • Carol 可以创建名称以“V”+数字开头的标签。
  • Dave可以克隆/获取。
群组权限

Gitolite 允许对用户或存储库进行分组,以方便使用。这是一个创建两组用户的示例:

@staff      =   alice bob carol
@interns    =   ashokrepo secretRW      =   @staffrepo fossRW+     =   @staffRW      =   @interns

组列表累积。以下两行的效果与 上述@staff的早期定义:

@staff      =   alice bob
@staff      =   carol

您还可以在其他组名称中使用组名称:

@all-devs   =   @staff @interns

最后,@all 是一个特殊的组名称,在以下情况下通常很方便使用 您实际上是指“所有存储库”或“所有用户”。

命令

用户可以使用 ssh 远程运行某些命令。运行

ssh git@host help

打印可用命令的列表。
最常用的命令是“info”。所有命令都响应 具有适当信息的“-h”的单个参数。
如果服务器上有 shell,则有更多的命令可用于 你;尝试运行“Gitolite Help”。

本地仓库

初始化本地Git仓库(如果尚未初始化)
进入某目录
cd <your dir>
git init
添加远程仓库URL
git remote add origin <远程仓库的URL> // 如 git remote add origin git@myserver:kakaer-react-vite
拉取远程仓库的内容(可选,如果远程仓库不为空)
git pull origin master
将所有本地文件添加到Git仓库
git add .
提交更改
git commit -m "初始提交"
推送更改到远程仓库
git push origin master

这篇关于在Ubuntu环境下搭建小型化Git服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/657820

相关文章

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i