shell 删除文件 四、服务器上的 Git(4)

电脑杂谈  发布时间:2018-02-11 20:23:18  来源:网络整理

一般的做法里,会同时提供 SSH 或者 HTTPS 协议的访问服务,只让少数几个开发者有推送(写)权限,其他人通过 git:// 访问只有读权限。

Git 协议也许也是最难架设的。它要求有自己的守护进程,这就要配置 xinetd 或者其他的程序,这些工作并不简单。

它还要求防火墙开放 9418 端口,但是企业防火墙一般不会开放这个非标准端口。而大型的企业防火墙通常会封锁这个端口。

2、在服务器上搭建 Git

现在我们将讨论如何在你自己的服务器上搭建 Git 服务来运行这些协议。

NOTE

这里我们将要演示在 Linux 服务器上进行一次基本且简化的安装所需的命令与步骤,当然在Mac 或 Windows 服务器上同样可以运行这些服务。

事实上,在你的计算机基础架构中建立一个生产环境服务器,将不可避免的使用到不同的安全措施与操作系统工具。

但是,希望你能从本节中获得一些必要的知识。

在开始架设 Git 服务器前,需要把现有仓库导出为裸仓库——即一个不包含当前工作目录的仓库。

这通常是很简单的。为了通过克隆你的仓库来创建一个新的裸仓库,你需要在克隆命令后加上 `--bare`选项按照惯例,裸仓库目录名以 .git 结尾,就像这样:

# git clone --bare my_project my_project.git

Cloning into bare repository ‘my_project.git‘...

done.

现在,你的 my_project.git 目录中应该有 Git 目录的副本了。

整体上效果大致相当于# cp -Rf my_project/.git my_project.git

虽然在配置文件中有若干不同,但是对于你的目的来说,这两种方式都是一样的。

它只取出 Git 仓库自身,不要工作目录,然后特别为它单独创建一个目录。

2.1 把裸仓库放到服务器上

既然你有了裸仓库的副本,剩下要做的就是把裸仓库放到服务器上并设置你的协议。

假设一个域名为git.example.com 的服务器已经架设好,并可以通过 SSH 连接,你想把所有的 Git 仓库放在 /opt/git 目录下。

假设服务器上存在 /opt/git/ 目录,你可以通过以下命令复制你的裸仓库来创建一个新仓库:# scp -r my_project.git user@git.example.com:/opt/git

此时,其他通过 SSH 连接这台服务器并对 /opt/git 目录拥有可读权限的使用者,通过运行以下命令就可以克隆你的仓库。

# git clone user@git.example.com:/opt/git/my_project.git

如果一个用户,通过使用 SSH 连接到一个服务器,并且其对 /opt/git/my_project.git 目录拥有可写权限,那么他将自动拥有推送权限。

如果到该项目目录中运行 git init 命令,并加上 --shared 选项,那么 Git 会自动修改该仓库目录的组权限为可写。

# ssh user@git.example.com

# cd /opt/git/my_project.git

# git init --bare --shared

由此可见,根据现有的 Git 仓库创建一个裸仓库,然后把它放上你和协作者都有 SSH 访问权的服务器是多么容易。

现在你们已经准备好在同一项目上展开合作了。

值得注意的是,这的确是架设一个几个人拥有连接权的 Git 服务的全部——只要在服务器上加入可以用 SSH 登录的帐号,然后把裸仓库放在大家都有读写权限的地方。你已经准备好了一切,无需更多。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-72418-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...