Git是一种流行的版本控制系统,在编程代码等领域都十分受欢迎,它可以在本地运行,也可以在服务器上运行从而进行协作,还可以作为托管服务,目前,有很多托管平台都十分受欢迎。
GitHub不是开源的。实际上,这对大多数用户来说没有太大区别。放在GitHub上的绝大多数代码都是鼓励大家共享的,所以GitHub的主要功能是一种公共备份服务。如果GitHub取消或彻底改变其服务条款,恢复数据将相对简单,因为你可以在GitHub上保存一个本地代码副本。然而,一些组织已经开始依赖于GitHub提供的非Git服务,这使得从GitHub迁移变得很困难。这是一个尴尬的地方,所以对于许多人来说,寻找一个Github替代品是一个不错的选择。
今天就和大家推荐5款开源的Github替代品:
1. GitLab
GitLab不仅仅是GitHub的一个替代品,它更像是一个完整的DevOps平台。GitLab几乎是软件开发机构必备的基础设施,因为它提供了代码和项目管理工具问题报告、持续交付和监控。你可以在GitLab.com上使用GitLab,也可以下载到本地使用,
GitLab致力于开源,无论是在其代码和背后的组织,还是在Git本身。该组织发布了大量的业务文档,作为一个网站,GitLab非常热衷于推广Git。当你使用站点的特性如合并请求时,如果在终端使用,GitLab的接口将处理在纯Git中解决请求。
2. Gitolite
Gitolite是一个轻量级的Git代码托管系统,与GitLab不同的是,它没有Web界面,没有桌面客户端,从用户的角度它没有向Git添加任何东西。事实上,用户并不直接使用Gitolite。他们还是像往常一样使用Git,不管是在终端中使用Git,还是在像Git Cola这样的前端客户端中使用Git。
不过,从服务器管理员的角度来看,Gitolite解决了运行普通Git服务器时必须手动管理的那些权限问题,使用Gitolite只在服务器上创建一个用户(例如,一个名为git的用户)接着使用这个身份登录访问Git服务器,Gitolite可以验证用户的访问权限、管理他们的SSH密钥、在访问特定存储库时验证他们的特权级别等等。管理员无需再创建无数的Unix用户帐户,而只需将用户(通过他们的SSH公钥标识)列到可访问的存储库列表里。
Gitolite的本质是几个prel脚本加一些纯文本配置文件,用户甚至感受不到他的存在,只要你不是想要一个网页界面,Gitolite就是一个双赢的选择。
3. Gitea and Gogs
Gogs 是一款获得MIT许可的Git服务器框架和Web用户界面,2016年,一些Gogs用户觉得开发受到了阻碍,因为只有最初的开发人员有访问开发库的权限,所以他们把代码交给了Gitea。如今,这两个项目彼此独立共存,从用户的角度来看,它们的体验基本上是相同的。不过这两个项目都托管在Github上
使用Gitea和Gogs,你可以下载源代码并在服务器上运行,它为用户提供了一个网站,用户可以在其中创建帐户、登录、创建自己的存储库、上传代码、浏览代码、文件问题和bug报告、请求代码合并、管理SSH密钥等等,它的界面在外观和感觉上与GitLab、GitHub或Bitbucket类似,所以如果用户有过任何在线代码管理系统的经验,他们基本上已经熟悉Gitea和Gogs。
Gitea或Gogs可以作为一个包安装在任何Linux服务器上,包括作为容器安装在BSD、macOS或Windows上,或者从源代码编译,它们都是跨平台的,所以它们可以在运行Go的任何东西上运行。
4. Git
虽然没有用户管理和权限设置,但Git集成了SSH,并附带了一个特殊的Git -shell应用程序,该应用程序是专门设计来作为使用Git命令的环境。将用户的默认shell设置为git-shell,可以限制用户在与服务器交互时可用的操作。
Git本身没有提供存储库权限工具来帮助你管理每个用户的访问权限,因此你不得不借助于操作系统的用户和访问控制列表(ACL)控件,如果你只有少数几个用户,那个操作会变得有点乏味,对于小型项目或刚刚启动的项目,在Linux服务器上运行Git是解决协作空间需求最简单而直接的解决方案。
5. Bonus: Fossil
Fossil绝对不是Git,从某种意义上说,这正是它作为GitHub替代品的吸引力所在。事实上,Fossil是整个Git系统的替代品。它是一个完整的版本控制系统,就像Git一样,它还在你创建的每个存储库中内置了bug跟踪、wiki、论坛和文档特性。它还包括一个Web界面,这听起来可能有点难以置信,感兴趣的可以尝试看看,只需从Fossil的网站下载并将其存储在系统PATH中的任何位置即可。