一直使用在 github 上托管的 git 服务,虽然 github 的代码托管,协作,wiki 功能,以及 bug tracking 功能都非常好用。但是随着项目不断增多,github 最便宜的每月 7 美元 5 个 private 项目的容量很快不够用了。想想反正自己有一台 Linode 的 CentOS 云服务器,于是诞生了自己架一套 git service 的念头,就不花钱升级 github 了。
根据 git 网站 Pro Git 书中的说明,选择 SSH 方式简单架设了一套。因为主要是自己使用,不存在提供给别人公共访问的要求,而且基本每台 Linux 服务器都可以 SSH, 所以选择了 SSH 方式。Pro Git 中对 git 可以采用的几种协议的优缺点以及适用场景都有详细介绍。下面是使用 SSH 方式的基本步骤:
有关 git 使用 SSH 的基本知识
要通过 SSH 克隆一个 Git repository,我们可以像下面这样指定 ssh:// URL :
$ git clone ssh://user@server:project.git
或者我们也可以不指定一个协议 — 如果没有显式指定的话 Git 假设是 SSH:
$ git clone user@server:project.git
我们也可以不指定一个用户,这样的话 Git 会假设是当前登录的用户(和使用 SSH 命令的情形类似)。
第一步,放一个裸的 Repository 到服务器上
假设 my_project 是我们在本地的一个 git Repository 项目目录,通过使用 --bare
参数生成只包含 git 信息的裸的项目拷贝
$ git clone --bare my_project my_project.git
第二步,通过 scp
命令把 git 拷贝存储到服务器
现在我们已经有了一个裸的 Repository 的拷贝,下一步就是把它放到服务器上。假设我们已经有了一个名为 git.example.com
的服务器,并且已经可以通过 SSH 进行访问。假设我们也在服务器的
/opt
目录下建了一个名为 git
目录专门用来存放 git 项目信息。我们就可以像下面这样通过拷贝一个裸的 Repository 到服务器上来设置一个新的 Repository:
$ scp -r my_project.git user@git.example.com:/opt/git
需要注意的是,如果我们给 SSH 设置了不同的访问端口(不是默认的 22),比如说是8080,那么我们需要用 -P 8080
参数来指定 SSH 使用的端口。
$ scp -r -P 8080 my_project.git user@git.example.com:/opt/git
第三步,使用服务器上的 git
这时候,其他也具有到同一台服务器 SSH 访问权限的用户就可以通过运行下面的命令来克隆我们的项目啦,要求至少对 /opt/git
目录具有读取权限:
$ git clone user@git.example.com:/opt/git/my_project.git
这里同样要注意 SSH 端口的问题,如果不是默认的 SSH 端口,要像下面这样运行命令(注意没有省略 ssh://,以及 8080 端口号放置的位置)
$ git clone ssh://user@git.example.com:8080/opt/git/my_project.git
剩下的就是和通常 git 的用法一样了,git pull
git push
等
例如:
$ git pull ssh://user@git.example.com:8080/opt/git/my_project.git
希望通过 SSH 之外的其他方式来假设 git,或者像提供 git 的公共访问或是希望提供 Web 页面的,更多信息请参考 git 官方网站上的文章:Git on the server
原文地址:http://www.tfan.org/build-a-simple-ssh-git-service-in-five-minutes/
分享到:
相关推荐
Gitosis则是方便通过Git与ssh架设中央服务器的软件。这篇文章的安装流程写得很明了,但使用中还是遇到了些许问题,本文算是该流程的补充。如果打算通过Gitosis架设服务器通过本文或许可以少走不少弯路。 一、架设...
1 起步 1 1 关于版本控制 1 2 Git 简史 1 3 Git 基础 1 4 安装 Git 1 5 初次运行 Git 前的配置 ...4 10 Git 托管服务 4 11 小结 5 分布式 Git 6 Git 工具 7 自定义 Git 8 Git 与其他系统 9 Git 内部原理
4.2 思考:为什么工作区根目录下有一个 .git 目录/ 60 4.3 思考:git config 命令的各参数有何区别/ 63 4.4 思考:是谁完成的提交/ 65 4.5 思考:随意设置提交者姓名,是否太不安全/ 67 4.6 思考:命令别名是干什么...
这是一个非常简单而且灵活的方式。如果不涉及开发者对项目访问权限的管理问题,这是一个最经济高效的解决方案,具体安装过程参考“安装copssh Git Sever的过程.doc”和“安装copssh Git Client的过程.doc”。 二 ...
GIT服务器 Gitolite ,Git是非常著名的分布式版本控制系统。gitolite 则是方便通过 Git 与 ssh 架设中央服...
第5篇介绍了git服务器的架设,首先讲解了http协议、git协议、ssh协议的使用,然后讲解了gitolite、gitosis、gerrit等服务器的架设方法,最后还讲解了git版本库的托管。第6篇介绍了版本库的迁移,包括如何从cvs、svn...
4 10 Git 托管服务 4 11 小结 5 分布式 Git 6 Git 工具 7 自定义 Git 8 Git 与其他系统 9 Git 内部原理 ">1 起步 1 1 关于版本控制 1 2 Git 简史 1 3 Git 基础 1 4 安装 Git 1 5 初次运行 Git 前的...
第5篇介绍了git服务器的架设,首先讲解了http协议、git协议、ssh协议的使用,然后讲解了gitolite、gitosis、gerrit等服务器的架设方法,最后还讲解了git版本库的托管。第6篇介绍了版本库的迁移,包括如何从cvs、svn...
在Git服务管理工具这个领域,主要有三种流行的方案,它们分别是:1.Gitosis-轻量级,开源项目,使用SSH公钥认证,只能做到库级的权限控制。目前项目已经停止开发,不再维护。2.Gitolite-轻量级,开源项目,使用SSH...
2.4.1 修改最后一次提交 . . . . . . . . . . . . . . . . . . . . . . 29 2.4.2 取消已经暂存的文件 . . . . . . . . . . . . . . . . . . . . . 30 2.4.3 取消对文件的修改 . . . . . . . . . . . . . . . . . . ....