转载: 搭建基础git仓库

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: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 [email protected]:/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就是这个工具。

时间: 2024-10-31 00:51:12

转载: 搭建基础git仓库的相关文章

搭建远程Git仓库

初始化本地git仓库 git init 配置忽略文件 vi .gitignore 添加本地文件 git add . 提交仓库初始化版本 git commit –m "initialcommit" 导出为裸仓库 git clone –bare my_projectmy_project.git 拷贝裸仓库到远程服务器 scp –r my_project.git [email protected]:/opt/git/my_project.git 修改远程仓库用户权限可写 ssh [email

用腾讯云Gogs搭建私有git服务器

前言 经常有需要写不能公开代码的项目,所以只好自己搭建一个私人的git服务器 Gogs的好处在于比Gitlib轻量化了好多,而且是国人写的,官方主页也是中文的 Gogs首页 腾讯云服务器配置: Ubuntu16.04 LTS 腾讯云学生版1G内存 1Mbps 准备安装 环境是标准的LNM环境:(我之前为了学PHP就已经安装好啦) sudo apt install nginx mysql-server git 配置数据库 SET GLOBAL storage_engine = 'InnoDB';

基于OS X Server 搭建 Git 仓库

任务: # 配置可读取Git仓库 # 配置可写入Git仓库 # 配置 Gitweb 系统环境: # OS X 10.9.2,系统自带 Apache httpd , 版本 2.2.26 (Unix) # OS X Server 3.1.1,为了避免Server这个词跟其他语境产生混淆,要是提到了OS X Server就用Server( app)替代 # Xcode 5.1,有了Xcode就有了Git,版本 1.8.5.2 描(tu)述(cao): 为什么要本地搭建Git服务器呢?代码的版本管理.集

在Dropbox上搭建私有的Git仓库的教程

导读 Git版本控制系统需要一个服务器端,而GitHub上要想创建私有的Git服务器端仓库则触及到收费项目,于是这里我们利用Dropbox的免费空间,来看一下在Dropbox上搭建私有的Git仓库的教程. 一.在Dropbox的文件夹下创建远程repository文件夹(.git后缀) cd ~/Dropbox/project mkdir demo.git 二.进入demo.git文件夹并初始化repository cd demo.git git init --bare 三.创建完毕,现在创建一

CentOS6 搭建Git仓库

近期上了Redmine以后,系统集成了Git的联动功能,于是萌生了搭建内网仓库的想法,特此记录一下: 1.安装Git yum -y install git 2.创建用户及密码 useradd git passwd git 3.创建仓库 首先切换用户到git su git 创建仓库目录并初始化 mkdir test.git cd test.git git --bare init 4.配置公钥 打开git的RSA认证 vi /etc/ssh/sshd_config 大概在中间位置吧,有这么三句话,取

ubuntu14.04 搭建git仓库记录

1.安装git -----------------------------开始安装------------------------------------- 1.1更新系统 # apt-get update 1.2 安装git # apt-get install git(中间会询问y/n选择y) 1.3配置git唯一标识(用户名和邮箱) # git config --global user.name "YourName" # git config --global user.name

centos/debian配置gitlab 7.1x来搭建自建的git仓库.

centos/debian配置gitlab 7.1x来搭建自建的git仓库. 前言:因为公司的某些历史原因, 有大量的代码还在csv/svn上. 新来的项目不得不走这个,同时,github的enterprise 2500$/y/10p的价格对于多变的项目和人员也不合适. 也为了让某些不习惯使用linux的开发使用上git, 就放弃了之前的gitolite server, 进而采用gitlab来搭建. www.gitlab.com 是gitlab的仓库, 以前的历史版本, 需要先配置gitolit

不搭建git服务器对git仓库进行局域网内共享多人合作开发项目

有时候在一个临时局域网内没有搭建git服务器,但是又想多人开发一个项目,此时只要每个人电脑安装有git客户端,参考一下方法即可尝试建一个本地化的远程仓库进行多人开发工作. 远程仓库通常只是一个裸仓库(bare repository)-- 即一个没有当前工作目录的仓库.因为该仓库只是一个合作媒介,所以不需要从硬盘上取出最新版本的快照:仓库里存放的仅仅是 Git 的数据.简单地说,裸仓库就是你工作目录中.git 子目录内的内容. 以上文字的意思就是,仓库必须是裸的.我们先从创建裸仓库开始: 1.首先

git - 搭建git仓库

1. 更新git版本: http://codelife.me/blog/2013/06/25/upgrade-git-on-centos-6-4/ 2. 建立git仓库: git init --bare myrepo.git    # 建立代码仓库 chgrp  -R git /opt/myrepo.git     # 更改属组 chmod g+rsw -R /opt/myrepo.git    # 给组 读写权限 #每次有人push后,设置 新文件的属组是 新属组git, echo “#!/b