千家信息网

Ubuntu上搭建git server的方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"Ubuntu上搭建git server的方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Ubuntu上搭建git server的
千家信息网最后更新 2026年11月03日Ubuntu上搭建git server的方法

这篇文章主要讲解了"Ubuntu上搭建git server的方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Ubuntu上搭建git server的方法"吧!

1.安装配置git服务器

安装git: sudo apt-get install git-core
新加用户git,该用户将作为所有代码仓库和用户权限的管理者:

代码如下:


sudo useradd -m git
sudo passwd git


建立一个git仓库的存储点: sudo mkdir /home/repo
让除了git以外的用户对此目录无任何权限:

代码如下:


sudo chown git:git /home/repo
sudo chmod 755 /home/repo


PS:此处要把git仓库repo的属性设置成755,不然在gitweb中一直无法找到工程

2.安装配置gitosis

初始化一下服务器的git用户,这一步其实是为了安装gitosis做准备。在任何一 台机器上使用git,第一次必须要初始化一下:

代码如下:


git config –-global user.name "scorpio"
git config –-global user.email "zsw.scorpio@gmail.com"


安装一下python的setup tool, 这个也是为了gitosis做准备:

代码如下:


sudo apt-get install python-setuptools


获得gitosis包:

代码如下:


cd /tmp
git clone git://eagain.net/gitosis.git
cd gitosis
sudo python setup.py install


切换到git用户下:

代码如下:


su git


默认状态下,gitosis会将git仓库放在 git用户的home下,所以我们做一个链接到/home/repo

代码如下:


ln -s /home/repo /home/git/repositories


再次返回到默认用户

代码如下:


$ exit


如果你将作为git服务器的管理员,那么在你的电 脑上生成ssh公钥:

本地:ssh-keygen -t rsa

将公钥拷贝到服务器的/tmp下:

本地:scp .ssh/id_rsa.pub git@xxoo.com:/tmp

回到git服务器上

代码如下:


sudo chmod a+r /tmp/id_rsa.pub


让gitosis运行起来:

代码如下:


sudo -H -u git gitosis-init < /tmp/id_rsa.pub


gitosis的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了/home/repo/gitosis- admin.git。我们需要为一个文件加上可执行权限:

代码如下:


sudo passwd root

su

cd repositories

cd gitosis-admin.git/

sudo chmod 755 /home/repo/gitosis-admin.git/hooks/post-update

exit


3.在服务器上新建一个测试项目仓库
我们在服务器上新建一个空的项目仓库,叫"test"。

切换到git用户:

代码如下:


su git

cd /home/repo

mkdir test.git

cd test.git

git init –bare注:这是在服务器上运行的,是为了初始化一个根级的git仓库

exit


这只是一个空仓库,空仓库是不能clone下来的。我们必须先修改一下gitosis-admin.
4.管理gitosis的配置文件

gitosis本身的配置也是通过git来实现的。在你自己的开发机里,把gitosis-admin.git这个仓库clone下来,就可以以管理员的身份修改配置了。

在你的电脑里:

代码如下:


git clone git@xxoo.com:gitosis-admin.git

cd gitosis-admin/


该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥:

各个用户按照前面提到的办法生成各自的ssh公钥文件后,把所有人的 ssh公钥文件都拿来,按名字命名一下,比如b.pub, lz.pub等,统统拷贝到keydir下

修改gitosis.conf文件,我的配置大致如下:

代码如下:


[gitosis]

[group gitosis-admin]

members = zsw.scorpio@gmail.com

writable = gitosis-admin


加入新文件、提交并push到git服务器:

代码如下:


git add .

git commit -m "add"

git push origin master


5.初始化测试项目

好了,现在服务器就搭建完了,并且有一个空的项目test在服务器上。接下来测试一下,空仓库是不能clone的,以下是在客户端完成。

代码如下:


mkdir dev

cd dev/

git init

echo "/*add something*/" > hello

git add .

git commit -m "initial version"

git remote add origin git@xxoo.com:test.git

git push origin master


到此为止test已经有了一个版本了,其他成员只要先clone一下 teamwork仓库,就可以任意玩了。

代码如下:


git clone git@xxoo.com:test.git

cd teamwork

vim hello

git add .

git commit -a "b add"

git push origin master

exit


6.创建gitweb

代码如下:


sudo apt-get install gitweb


配置 gitweb

默认没有 css 加载,把 gitweb 要用的静态文件连接到

代码如下:


cd /var/www/

sudo ln -s /usr/share/gitweb/* .


修改配置

代码如下:


sudo vim /etc/gitweb.conf


将 $projectroot 改为git仓库存储目录(例如:/home/git/repositories),保存后刷新浏览器。

代码如下:


http://xxoo.com/cgi-bin/gitweb.cgi


7. 修改/etc/gitweb.conf 内容

代码如下:


# path to git projects (.git)

#$projectroot = "/var/cache/git";

$projectroot = "/home/git/repositories";

# directory to use for temp files

$git_temp = "/tmp";

# target of the home link on top of all pages

$home_link = $my_uri || "/";

# html text to include at home page

$home_text = "indextext.html";

# file with project list; by default, simply scan the projectroot dir.

$projects_list = $projectroot;

# stylesheet to use

@stylesheets = ("/gitweb/static/gitweb.css");

# javascript code for gitweb

$javascript = "gitweb/static/gitweb.js";

# logo to use

$logo = "/gitweb/static/git-logo.png";

# the ‘favicon’

$favicon = "/gitweb/static/git-favicon.png";

# git-diff-tree(1) options to use for generated patches

#@diff_opts = ("-M");

@diff_opts = ();


8.重启apache

代码如下:


sudo /etc/init.d/apache2 restart

感谢各位的阅读,以上就是"Ubuntu上搭建git server的方法"的内容了,经过本文的学习后,相信大家对Ubuntu上搭建git server的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

代码 仓库 服务器 服务 用户 配置 文件 公钥 管理 方法 目录 项目 内容 权限 学习 测试 拷贝 是在 管理员 准备 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 深圳恒合互联网络科技有限公司 金融科技还是互联网 互联网中国科技 金融科技 互联网金融 奇士达互联网科技 互联网科技视频素材 互联网科技大会案例 西藏七维空间互联网科技有限公司 字节跳动和互联网科技 广州恒生互联网科技有限 互联网科技研发水平 乌鲁木齐新华智原互联网科技学校 长沙互联网科技 互联网企业科技类企业如何做账 广东工业互联网大赛深圳学泰科技 江苏互联网科技小贷 东营紫格互联网科技 昆明中奇联合互联网科技 广州三三互联网科技有限公司 互联网的科技 小米互联网科技园设置 宁夏科技产业互联网案例 互联网对科技的发展 互联网金融科技展 每天都有哪些好的互联网科技 半导体行业属于互联网高科技类吗 广州燕处互联网科技有限公司 陕西九四连强互联网科技有限公司 广州三三互联网科技有限公司
0