首页 > 其他分享 >搭建Git服务

搭建Git服务

时间:2023-04-23 16:39:43浏览次数:43  
标签:git 服务 仓库 sudo sample Git 源代码 搭建


搭建Git服务

远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。


GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git

$ sudo apt-get install git

第二步,创建一个git用户,用来运行git服务:

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git

$ sudo chown -R git:git sample.git

第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

剩下的推送就简单了。

管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

管理权限

有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。

这里我们也不介绍Gitolite了,不要把有限的生命浪费到权限斗争中。

标签:git,服务,仓库,sudo,sample,Git,源代码,搭建
From: https://blog.51cto.com/u_16085147/6218163

相关文章

  • Nginx配置跨域,覆盖后端服务跨域配置
    本篇文章主要介绍了,如何通过Nginx配置跨域,并覆盖后端服务跨域配置。先看下后端代码跨域配置:主要的目标是:不修改后端跨域配置代码,来实现Nginx跨域指定域名。@BeanpublicCorsFiltercorsFilter(){finalUrlBasedCorsConfigurationSourceurlBasedCorsCon......
  • Linux 环境,设置git账户密码,免登录
    1git配置个人用户信息#配置用户名gitconfig--globaluser.namewangjing#配置用户邮箱[email protected]#配置记住用户验证信息gitconfig--globalcredential.helperstore#查看相关配置信息gitconfig--lis  2保存账号2.1创建配......
  • SRS流媒体服务器之HTTP-FLV框架分析
    SRS流媒体服务器之HTTP-FLV框架分析链接:https://www.isolves.com/it/cxkf/kj/2021-03-25/37488.html介绍的代码和现版本代码有出处,但对流程序的理解有相当的价值。简要笔记如下。整体的框架:RTMP推流端-----》SRS流媒体服务器(建立SOURCE->生成Consumer->指定封装格式endoder=F......
  • 修改Git全部Commit提交记录的用户名Name和邮箱Email
    当我们换邮箱了,想把已经提交过的commit的邮箱和用户名改成新的时候。先把本地配置成新的gitconfiguser.name'丁少华'gitconfiguser.email'新邮箱@xx.com'这时候就可以用下面的脚本代码了在项目根目录下创建email.sh写入下面这段代码#!/bin/shgitfilter-branch......
  • 低代码感觉很能打——可视化搭建系统,把格局做大!
    有人说「可视化搭建系统」说到底只是重复造轮子产生的玩具;有人说「可视化搭建系统」本质是组件枚举,毫无意义。片面的认知必有其产生的道理,但我们不妨从更高的角度出发,并真切落地实践,也许你会发现:我们能做的事情还有更多。我对低代码的理解低代码开发,是一种开发模式,通过图形......
  • 服务器重装系统
    HUAWEI服务器重装系统指南第一步配网这一步主要实现远程连接服务器功能,具体操作为找一个显示器和一个键盘。显示器插上电源后,将VGA信号线(也就是蓝色头线)连接显示器和服务器,键盘线连接服务器,然后重启服务器,按下Del键,然后转到如果让输入密码则输入默认密码Admin@9000进到BIO......
  • ssm框架整合 理解及搭建
    如何开发一个java-web的开发模式。三大块前端后端存储。分层,首先用户的请求到view,view调后端controller,controller业务逻辑处理存储,数据模型层model。按照这种模式开发。用框架实现mvc。目前用springmvc,最早期的controller层用的是struts1,servlet,再往后是struts+hibern......
  • mysql主从-day1——mysql主从搭建、django中使用多数据库做读写分离
    目录一、mysql主从5django使用多数据库做读写分离一、mysql主从#之前做过redis的主从,很简单#mysql稍微复杂一些,搭建mysql主从的目的是? -读写分离-单个实例并发量低,提高并发量-只在主库写,读数据都去从库#mysql主从原理步骤一:主库db的更新事件......
  • github的repository和star的区别
    在GitHub上,Repository(仓库)是一个用于存储、管理和共享代码的项目空间,而Star则是用户对某个项目的一个收藏行为。当您Star一个GitHub上的项目时,这个项目就会被添加到您的收藏列表中,您可以通过收藏列表方便地找到这个项目,也可以收到这个项目的更新通知。Star还可以反映出一个项目的......
  • 关于【安全狗】在【phpstudy】中【无法找到apache服务名】的问题
      网上很多说就是在安装安全狗apache版的时候,安装程序找不到apache的服务名。   然后看了网上很多教程说就是把phpstudy的允许模式改为【系统服务】模式就行  但是我改了之后在服务里面还是没有找到apache的服务。   这里我记录下,给那些有需要的小伙伴   我......