对于我们写代码的人来说,git
再熟悉不过了,也必不可少,比如像我,在单位写了点东西,晚上回到家有时还要捯饬一下,但电脑带来带去的也麻烦不是,有了私有的Git
库,就方便多了,随时随地都能同步代码,方便的不只一点点。
今天我说来讲讲如何在Ubuntu22.04
的环境下搭建我们私有的Git存储库,这里给大家介绍一个库 gitolite
,不是一般的好用啊, 是相当的好用。下面开始介绍它。
用于托管存储库的专用用户 ID(在本文档中,我们假设它是 “git”,但它可以是任何东西;相应地替换)
此用户 ID 当前没有任何基于 SSH 公钥的访问权,理想情况下,此用户 ID 只能通过某些 “su - git” 进行 shell 访问 同一服务器上的其他用户 ID(这确保了 SSH 的混淆!
sudo apt-get install git openssh-server openssh-client -y
安装Python
的setuptools
和gitosis
,由于gitosis
要依赖python
的一些工具,所以要先安装相关依赖:
sudo apt-get install python3 python3-setuptools -y
切换为root用户为了获取创建用户的权限
peng@ubuntu:~$ sudo su
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用户切换到普通用户不输入密码就可直接切换
首先,准备 ssh 密钥:
接下来,通过运行以下命令安装 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 foo
RW+ = alice
- master = bob
- refs/tags/v[0-9] = bob
RW = bob
RW refs/tags/v[0-9] = carol
R = dave
以下是这些示例规则的内容:
Gitolite 允许对用户或存储库进行分组,以方便使用。这是一个创建两组用户的示例:
@staff = alice bob carol
@interns = ashok
repo secret
RW = @staff
repo foss
RW+ = @staff
RW = @interns
组列表累积。以下两行的效果与 上述@staff的早期定义:
@staff = alice bob
@staff = carol
您还可以在其他组名称中使用组名称:
@all-devs = @staff @interns
最后,@all 是一个特殊的组名称,在以下情况下通常很方便使用 您实际上是指“所有存储库”或“所有用户”。
用户可以使用 ssh 远程运行某些命令。运行
ssh git@host help
打印可用命令的列表。
最常用的命令是“info”。所有命令都响应 具有适当信息的“-h”的单个参数。
如果服务器上有 shell,则有更多的命令可用于 你;尝试运行“Gitolite Help”。
进入某目录
cd <your dir>
git init
git remote add origin <远程仓库的URL> // 如 git remote add origin git@myserver:kakaer-react-vite
git pull origin master
git add .
git commit -m "初始提交"
git push origin master