使用 Gitolite 搭建 Git 服务器是管理 Git 仓库和用户权限的一种高效方式。Gitolite 是一个轻量级的 Git 服务器管理工具,它允许管理员通过 SSH 访问控制和配置文件来管理多个 Git 仓库和用户权限。
博主博客 {#博主博客}
一、安装 Vim {#一、安装-vim}
-
01
sudo apt install vim
</code>
</pre>
二、安装 Git {#二、安装-git}
`` sudo apt install git
</code>
</pre>
三、创建用户 {#三、创建用户}
`
`
-
创建git用户: sudo adduser git
-
切换到git用户: su git
-
进入git用户目录: cd ~
四、安装 Gitolite {#四、安装-gitolite}
{#codeBlock0-1733987765133}
`
git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
`
</code>
</pre>
`
`
**五、注册仓库管理员** {#五、注册仓库管理员}
--------------------------
`
`
* 新建 ` YourName.pub ` 文件,将客户端公钥 ` .ssh/id_rsa.pub ` 复制到里面,然后注册为仓库管理员
`
`` ``
vim YourName.pub
# 复制客户端公钥内容,按:wq保存退出
$HOME/bin/gitolite setup -pk YourName.pub # 注册仓库管理员
`
</code>
</pre>
`
`
建议在服务器上新建 ` admin ` 用户作为仓库管理员
`
`
* 新建管理员用户 ` admin `
`
`{#codeBlock0-1733987765133}
````````prism language-bash
`
sudo adduser admin
`
</code>
</pre>
`
`
* 生成 ` SSH ` 公钥
`
`` ``
su admin
ssh-keygen -t rsa -C "
youremail@example.com
"
cp .ssh/id_rsa.pub /tmp/admin.pub
`
</code>
</pre>
`
`
* 切回 ` git ` 用户,将 ` admin ` 用户注册为仓库管理员
`
`
```````prism language-bash
su git
cd ~
$HOME/bin/gitolite setup -pk /tmp/admin.pub
</code>
</pre>
注册管理员后会生成两个文件 ` projects.list ` , ` repositories/projects.list ` 保存仓库信息列表
` repositories/ ` 文件夹里有管理员仓库 ` gitolite-admin.git/ ` 和测试仓库 ` testing.git/ `
新建的仓库都会保存在 ` repositories/ ` 文件夹中。
**六、管理远程仓库** {#六、管理远程仓库}
------------------------
* 在已经注册过的客户端克隆管理员仓库
``````prism language-bash
git clone git@host:gitolite-admin
</code>
</pre>
管理员仓库里有两个文件 ` conf/gitolite.conf ` 和 ` keydir/ `
` gitolite.conf ` 管理仓库信息
` keydir/ ` 保存 ` git ` 成员的公钥
* 添加新成员: 将新成员的公钥保存到 ` keydir/ ` 下
* 新建仓库
修改 ` conf/gitolite.conf ` 文件,添加 ` newrepo ` 仓库
`````prism language-conf
repo gitolite-admin
RW+ = admin
repo testing
RW+ = @all
repo newrepo
RW+ = @all
</code>
</pre>
* 添加仓库管理员
````prism language-conf
repo gitolite-admin
RW+ = admin
RW+ = lin-zone
repo testing
RW+ = @all
repo newrepo
RW+ = @all
</code>
</pre>
**七、将仓库信息推送到服务器** {#七、将仓库信息推送到服务器}
----------------------------------
在客户端更新完仓库信息后,需要将其推送到服务器才能生效
```prism language-bash
git add .
git commit -m "commit message"
git push origin master
</code>
</pre>
参考文献 {#参考文献}
------------
* https://github.com/sitaramc/gitolite
```
````
`````
``````
```````
````````