Git Server

如何最简便的搭建Git服务?

假设你有个绑定域名为git.gitfaq.cn的服务器,并且可以通过SSH登录,计划将所有仓库(repository)放到/data/git目录中。

建立仓库(repository) #

本地新建仓库(repository)

mkdir repo.git
git init

将仓库(repository)上传到服务器中。

scp -r repo.git [email protected]:/data/git

成功后,即可通过[email protected]:/data/git/repo.git来访问远端仓库。

访问仓库(repository) #

建立好仓库后,拥有SSH权限的user就可以对[email protected]:/data/git/repo.git拥有操作权限。

还可以通过git init --shared设置仓库目录的组权限为可写,此命令不会影响任何提交、引用等内容。

ssh [email protected]
cd /data/git/repo.git
git init --bare --shared

如果需要多个用户都对仓库有读写权限,又不能给每个用户在服务器上建立账户,那么提供 SSH 连接就是唯一的选择。 假设用来共享仓库的服务器已经安装了 SSH 服务,而且你通过它访问服务器。

以下几个方法可以使你给团队每个成员提供访问权:

  • 给每个人创建账号,为每个人运行一次 adduser(或者 useradd)并且设置密码。
  • 在主机上建立一个 git 公用账户,每个需要权限的人发一个 SSH 公钥, 然后将其加入 git 账户的 ~/.ssh/authorized_keys 文件。 这样一来,所有人都将通过 git账户访问主机。
  • 让 SSH 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权。 只要每个用户可以获得主机的 shell 访问权限,任何 SSH 授权机制你都可视为是有效的。