手搓一个极简远端git库

原文地址:手搓一个极简远端git库 -- 无敌牛

欢迎参观我的个人博客无敌牛 -- 技术/著作/典籍/分享等

问题分析

公司一直用 gitlab (或者 极狐 都是一样的)作为代码管理库,但是看了一些文章说代码最小的管理只需要 git 就可以了。那么 gitlab 和 git 到底是什么关系呢?就调研了一下。

原来,git 才是 Linus Torvalds 的杰作,而 gitlab 则是基于 git 开发的。以 git 为核心,又增加了一些权限管理验证、CI/CD、代码库管理、讨论、wiki等附加功能。那么,想做一个 极简的 代码库管理平台,只需要一个 git 工具,可不可以实现呢?完全可以!准确的说,git + openssh-server 可以实现。为什么需要 openssh-server 呢?因为 git 登录认证 默认依赖 ssh 登录,恐怕也极少有服务器不装 openssh-serveropenssh-server 就是 sshd) 的吧。

搭建和测试

方案说明:

1、准备两个设备 A 和 B(一台也可以,即做服务端 也做客户端),在设备上安装 git 和 openssh-server;对应下文中第一步

2、在 A 创建 git 代码平台库 taa.git,使用的账户是 lclgit ;对应下文中第二、三步

3、然后在 A 设备添加 B 设备某个用户(此用户简称 Buser,可以使用任何一个账户,例如 root 就可以)的免密登录,使 B 设备的用户 Buser 可以使用自己的密钥免密登录 A 设备上的 lclgit 用户;对应下文中第四步

4、在 B 设备做拉取代码,上传,更新等测试。对应下文中第五步

第一步、安装必要软件

安装 openssh-server 和 git。只要 sshd 能登陆,就说明,不需要再安装 openssl-server。直接安装 git 就可以了。

以 Debian 打包系列的 linux 系统为例:apt install git openssh-server

第二步、创建用户

本次示例创建用户 lclgit ,并指定 lclgit 用户的 home 目录为:/tgit/lclgit/

执行指令:adduser --system --shell /bin/bash --group --disabled-password --home /tgit/lclgit/ lclgit

第三步、创建仓库

此步骤的目标:创建 taa.git 代码库。可以先切换到 lclgit 用户再执行这一步的操作,这样避免了一些文件权限处理。

/tgit/lclgit 目录下依次执行指令:

切换到 lclgit 用户:su - lclgit -s /bin/bash

创建 taa.git 目录,这个会作为代码库:mkdir taa.git

初始化 taa.git 代码库:git init --bare taa.git/

到此,命名为 taa.git 的代码库 git 库就建立完成了。

第四步、添加ssh免密登录

这一步完全就是设置免密登录 lclgit 账户的,和 git 本身没有关系。获取客户端的 某用户的 公钥,一般在 ~/.ssh/id_rsa.pub,没有的化使用 ssh-keygen 创建即可。将其写入到 A 设备的 /tgit/lclgit/.ssh/authorized_keys 文件就可以了。

第五步、测试

拉取 taa.git 库,测试能不能修改、提交、推送。

换个开发目录,看看是否能同步、修改、提交、推送,并切换回原来的开发目录,测试能否成功拉取已经修改的内容。


关于git的基本使用,参看往期文章:git基本使用 -- 无敌牛

相关推荐
网硕互联的小客服23 分钟前
centos系统快捷命令有哪些?
运维·服务器·网络·centos
D^ε^S1 小时前
GB28181系列三:GB28181流媒体服务器ZLMediaKit
服务器·网络·网络协议·音视频
洋芋爱吃芋头2 小时前
scala的泛型2
开发语言·后端·scala
悻运2 小时前
scala的泛型类
开发语言·后端·scala
2401_833788052 小时前
Scala函数的泛型
开发语言·后端·scala
多敲代码防脱发3 小时前
数据链路层(Java)(MAC与IP的区别)
运维·服务器·网络·java-ee
TPCloud3 小时前
快速解决git@github.com: Permission denied (publickey)
git·github·publickey
一个略懂代码的程序员3 小时前
Redis02 SpringBoot整合Redis
spring boot·redis·后端
Geek极安网络安全3 小时前
2024 年安徽省职业院校技能大赛(高职组) “5G 组网与运维”赛项规程
运维·服务器·网络·5g·安全·web安全