搭建个人 git 服务器

ShadowC

| 本文阅读量: -

ref: 廖雪峰 - 搭建 Git 服务器

利用一个 7 x 24 开机的服务器,搭建一个方便代码交换的中转服务器

操作记录

  1. 安装 git
$ sudo apt-get install git
$ sudo yum install git
  1. 新增 git 用户,用于 ssh 访问
$ sudo adduser git
  1. (如果需要)将公钥导入到 /home/git/.ssh/authorized_keys 文件里;或者在本地执行 ssh-copy-id user@host -p 1234,其中 -p 参数指定了 ssh 服务的端口;
  2. 禁用 git 账户的 ssh 登录:这可以通过编辑/etc/passwd文件完成。
$ vim /etc/shadow

- git:x:1001:1001:,,,:/home/git:/bin/bash
+ git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
  1. 初始化一个裸(Bare) 仓库,并修改权限
$ sudo git init --bare sample.git

$ sudo chown -R git:git sample.git
  1. 远程访问该仓库,如 git clone 或者 git remote add origin git@host:/xxx

补充事项

如果修改了 ssh 的访问端口,显然 git 使用 ssh 访问时也要指定端口,典型的使用方式如下:

$ git remote add origin ssh://git@<host>:<port>/path/to/simple.git

$ git push --set-upstream origin main

这里使用了完整的协议格式来指定端口。

Claim

管理权限

from 廖雪峰

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

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