自己开发git服务器,有哪些开源可以借用?

谢邀。自建 Git 服务器看上去似乎很简单,其实会有很多你不知道的坑存在。建议题主一定要再三考虑好,不然只会费力不讨好。这里提供一些开源的 Git 服务器版本以供题主和大家学习和交流。

1、GitLab 开源版本

简介:GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

项目地址:https://gitee.com/mirrors/gitlab

2、Gogs 开源版本

简介:Gogs 是一款极易搭建的自助 Git 服务,其目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

项目地址:https://gitee.com/Unknown/gogs

3、Gitea 开源版本

简介:Gitea的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了x86,amd64,还包括 ARM 和 PowerPC。

项目地址:https://gitee.com/gitea/gitea

4、Gitosis 开源版本

简介:Git 是非常著名的分布式版本控制系统。Gitosis 则是方便通过 Git 与 ssh 架设中央服务器的软件。

项目地址:https://www.oschina.net/p/gitosis

5、GitStack 开源版本

简介:gitstack 是 Windows 下的 Git 版本控制软件。

项目地址:https://www.oschina.net/p/gitstack

6、Gitolite 开源版本

简介:Git是非常著名的分布式版本控制系统。gitolite 则是方便通过 Git 与 ssh 架设中央服务器的软件。

项目地址:https://www.oschina.net/p/gitolite

7、Gidder 开源版本

简介:Gidder 是通过 SSH 访问的 Andriod Git 服务器!

支持push pull fetch clone 支持用户管理支持仓库管理支持动态dns

项目地址:https://www.oschina.net/p/gidder

关注码云:mayunOSC

发现更多优质开源项目:最新推荐 - 码云 - 开源中国

团队流畅、高效开发:码云企业版 - 码云 - 开源中国

有两种方式可以搭建自己的git服务器

第一种:在ubuntu18上配置git服务器并配置客户端公钥实现版本控制(成功实现)

首先配置ssh

一、首先操作服务端:

1、安装 ssh

sudo apt-get install openssh-server openssh-client

2、在服务端创建文件 authorized_keys

cd ~/.ssh touch authorized_keys chmod 644 authorized_key

3、将客户端的公钥写入文件

gedit authorized_keys

二、操作客户端

1、安装ssh

sudo apt-get install openssh-client

2、生成客户端公钥

ssh-keygen gedit /home/figo/.ssh/id_rsa sudo cp id_rsa.pub ~/文档/ssh

3、将公钥写入服务端 authorized_keys 文件

这步生成的公钥写入上述 一的3中。

设置git

一、服务端

1、安装git

sudo apt-get install git

2、创建一个git库

git init --bare my.git/

二、客户端

1、安装git并设置用户名、邮箱

sudo apt-get install git git config --global user.email "[email protected]" git config --global user.name "client“

2、从服务端克隆代码(server为git服务端的名字)

git clone [email protected]:/home/server/gitdir/mygit

从服务端拉取代码

git pull

3、添加文件到缓存

git add .

4、提交并推送到服务器

git commit -m "test first" git push -u origin maste

第二种:在ubuntu18上配置git服务器并通过Gitolite配置用户权限(成功实现)

一:

1、在服务端安装ssh和git

apt-get update

# 安装 ssh

apt-get install openssh-server

# 安装 Git

apt-get install git

2、在服务端创建一个gitadmin用户

sudo useradd -m gitadmin sudo passwd gitadmin

3、将gitadmin设置为管理用户

sudo vim /etc/sudoers

打开sudoers,在下面位置添加gitadmin

# User privilege specification root ALL=(ALL:ALL)ALL gitadminALL=(ALL:ALL)ALL

然后保存退出

4、公钥文件改名

在服务器切换到gitadmin用户

su git

生成一对 RSA 密钥

ssh-keygen -t rsa

进入密钥的目标,将公钥文件改名(原名为:id_rsa.pub)

cd /home/git/.ssh mv id_rsa.pub admin.pub

5、安装Gitolite

进入 gitadmin用户主目录

cd /home/gitadmin

下载 gitolite 的仓库

git clone git://github.com/sitaramc/gitolite

创建 bin 文件夹

mkdir -p $home/bin

安装 gitolite

gitolite/install -to $HOME/bin

6、配置Gitolite

进入密钥目录

cd /home/gitadmin/.ssh

将管理的公钥文件 setup 到 gitolite 中

home/gitadmin/bin/gitolite setup -pk admin.pub

切回gitadmin主目录,多出了一个文件、一个文件夹

cd /home/gitadmin

ls

# projects.list 文件:仓库列表文件(gitolite自动创建)

# repositories 文件夹:存放所有 git 仓库的文件夹

# repositories 文件夹已经存在两个仓库 gitolite-admin.git、testing.git

# gitolite-admin.git 管理配置权限的仓库

# testing.git 测试仓库

二:

7、下载服务器端的远程管理仓库 gitolite-admin

* 我是在 GitServer 这个电脑上下载 gitolite-admin,也可以在其他电脑上下载 gitolite-admin 进行管理。

注:使用其他电脑进行管理,需要将其他电脑生产的公钥文件 setup 到 gitolite 中。

进入 gitadmin主目录

cd /home/gitadmin

下载远程管理仓库

git clone [email protected]:/gitolite-admin

进入 gitolite-admin 目录,可以看到 conf、keydir 两个文件夹

cd gitolite-admin

# keydir 用来存放所有用户的pub公钥文件的,当前目录有 admin.pub 文件

# conf 用来配置 Git 仓库、用户、用户组权限的,由目录下 gitolite.conf 文件来配置

8、配置gitolite.conf

进入 conf 目录,编辑 gitolite.conf

cd conf vi gitolite.conf

作如下编辑:

创建管理组 admin,组员有 admin

创建开发组 dev,组员有 figo

创建仓库 testfigo

admin组 拥有 master 分支读写权

dev组 拥有 dev 分支读写权

@admin = admin @dev = figo repo gitolite-admin RW+ = admin repo testing RW+ = @all repo testfigo RW+ = @admin RW+master = @admin RW+dev = @dev

将figo的公钥上传到 /home/gitadmin/gitolite-admin/keydir/figo.pub

应用修改到远程服务器端

刚刚的配置就是修改了 gitolite-admin 仓库的文件,还需要将修改后的文件提交到服务器端

切换到 gitolite-admin 目录

cd /home/gitadmin/gitolite-admin

9、配置 git config,告诉 Git 你是谁 (根据自己情况)

git config --global user.name "admin" git config --global user.email "[email protected]"

提交到远程服务器端(提交的文件:gitolite.conf、figo.pub)

git add . git commit -m "update gitolite-admin" git push

进入/home/gitadmin/repositories/目录,新增了 testfigo.git 的仓库文件,这是一个空白仓库

10、客户端clone项目

figo用户的客户端可以 clone 服务端仓库 testfigo.git

git clone [email protected]:testfigo.git

推荐一个轻量级易部署的开源项目 gitea,不仅功能适用还支持跨平台。

gitea 的社区非常活跃,目前 GitHub 上已经 26.6K+的 star,热度持续上涨中。

GitHub 地址:https://github.com/go-gitea/gitea官方文档:https://docs.gitea.io

简介

Gitea 是一个自己托管的 Git 服务程序。他和 GitHub, Bitbucket or Gitlab 等比较类似。他是从 Gogs 发展而来,已经 Fork 并且命名为 Gitea。Gitea 的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。采用 Go 作为后端语言,这使得只要生成一个可执行程序即可。并且它还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了 x86,amd64,还包括 ARM 和 PowerPC。

功能特性

支持活动时间线支持 SSH 以及 HTTP/HTTPS 协议支持 SMTP、LDAP 和反向代理的用户认证支持反向代理子路径支持用户、组织和仓库管理系统支持添加和删除仓库协作者支持仓库和组织级别 Web 钩子(包括 Slack 集成)支持仓库 Git 钩子和部署密钥支持仓库工单(Issue)、合并请求(Pull Request)以及 Wiki支持迁移和镜像仓库以及它的 Wiki支持在线编辑仓库文件和 Wiki支持自定义源的 Gravatar 和 Federated Avatar支持邮件服务支持后台管理面板支持 MySQL、PostgreSQL、SQLite3, MSSQL 和 TiDB(实验性支持) 数据库支持多语言本地化(21 种语言)

快速体验

快速安装

Linux

目前还没有对应的 Linux 安装包发布,当前可以查看从二进制安装。

所有下载均包括 SQLite, MySQL 和 PostgreSQL 的支持,同时所有资源均已嵌入到可执行程序中,这一点和老版本有所不同。 基于二进制的安装非常简单,只要从下载页面(地址:https://dl.gitea.io/gitea)选择对应平台,拷贝下载URL,执行以下命令即可(以Linux为例):

wget -O gitea /1.15.4/gitea-1.15.4-linux-amd64 chmod +x gitea

在执行了以上步骤之后,你将会获得 gitea 的二进制文件,在你复制到部署的机器之前可以先测试一下。在命令行执行完后,你可以 Ctrl + C 关掉程序。

./gitea web

Windows

下载相应的 exe 文件安装包,采用安装包的方式进行安装,可以在如下地址找到安装包:

macOS

macOS 平台下当前我们仅支持通过 brew 来安装。 你可以执行以下命令:

brew tap go-gitea/gitea brew install gitea

配置数据库

gitea 首次启动时需要配置数据库,它支持 MySQL、PostgreSQL、MSSQL 或 SQLite3 等多种数据库。启动后访问http://127.0.0.1:3000即可看到如下配置页面。

注册登录

配置完成后,进入到首页,点击右上角进行注册登录。

创建项目

根据对应输入框创建完账户后进入到后台页面,首先需要创建一个仓库。

项目操作

创建完成后的界面我们应该很熟悉了,这里需要配置 ssh 进行拉取和提交。

还可以进行 PR 请求,查看版本发布以及动态等。

正如 Gitea 的标语一样,只需一杯茶的功夫就可以搭建 Git 服务,如此简易实用,还等什么,赶紧用起来吧!

我在准备面试的时候,整理了一系列非常全面的图解计算机基础的PDF,分享给需要的小伙伴,没有任何套路!获取方式:图解计算机基础!(整理不易,有帮助的话欢迎点赞!)。

另外,国内现在的校招面试开始越来越重视算法了,尤其是像字节跳动、腾讯这类大公司。绝大部分公司的校招笔试是有算法题的,如果 AC 率比较低的话,基本就挂掉了。一定要多多刷Leetcode,这是我整理的一些 Leetcode 相关的资料:阿里ACM大佬开源的学习笔记!TQL!(整理不易,有帮助的话欢迎点赞!)。享给需要的小伙伴,没有任何套路!

Github掘金计划由3位志同道合热爱开源的小伙伴维护,我们想让 Github 和 Gitee 上优质的开源项目被更多人看到

如果有帮助的话点个在看或者赞就是对我们最大的鼓励!欢迎关注 @Github掘金计划,持续分享优质开源项目!