开始架设 Git 服务器前,需要先把现有仓库导出为裸仓库 — 即一个不包含当前工作目录的仓库。做法直截了当,克隆时用 --bare
选项即可。裸仓库的目录名一般以 .git
结尾,像这样:
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.
该命令的输出或许会让人有些不解。其实 clone
操作基本上相当于 git init
加 git fetch
,所以这里出现的其实是 git init
的输出,先由它建立一个空目录,而之后传输数据对象的操作并无任何输出,只是悄悄在幕后执行。现在 my_project.git
目录中已经有了一份 Git 目录数据的副本。
整体上的效果大致相当于:
$ cp -Rf my_project/.git my_project.git
但在配置文件中有若干小改动,不过对用户来讲,使用方式都一样,不会有什么影响。它仅取出 Git 仓库的必要原始数据,存放在该目录中,而不会另外创建工作目录。
把裸仓库移到服务器上
有了裸仓库的副本后,剩下的就是把它放到服务器上并设定相关协议。假设一个域名为 git.example.com
的服务器已经架设好,并可以通过 SSH 访问,我们打算把所有 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 会自动修改该仓库目录的组权限为可写(译注:实际上 --shared
可以指定其他行为,只是默认为将组权限改为可写并执行 g+sx
,所以最后会得到 rws
。)。
$ ssh user@git.example.com
$ cd /opt/git/my_project.git
$ git init --bare --shared
由此可见,根据现有的 Git 仓库创建一个裸仓库,然后把它放上你和同事都有 SSH 访问权的服务器是多么容易。现在已经可以开始在同一项目上密切合作了。
值得注意的是,这的的确确是架设一个少数人具有连接权的 Git 服务的全部 — 只要在服务器上加入可以用 SSH 登录的帐号,然后把裸仓库放在大家都有读写权限的地方。一切都准备停当,无需更多。
下面的几节中,你会了解如何扩展到更复杂的设定。这些内容包含如何避免为每一个用户建立一个账户,给仓库添加公共读取权限,架设网页界面,使用 Gitosis 工具等等。然而,只是和几个人在一个不公开的项目上合作的话,仅仅是一个 SSH 服务器和裸仓库就足够了,记住这点就可以了。
小型安装
如果设备较少或者你只想在小型开发团队里尝试 Git ,那么一切都很简单。架设 Git 服务最复杂的地方在于账户管理。如果需要仓库对特定的用户可读,而给另一部分用户读写权限,那么访问和许可的安排就比较困难。
SSH 连接
如果已经有了一个所有开发成员都可以用 SSH 访问的服务器,架设第一个服务器将变得异常简单,几乎什么都不用做(正如上节中介绍的那样)。如果需要对仓库进行更复杂的访问控制,只要使用服务器操作系统的本地文件访问许可机制就行了。
如果需要团队里的每个人都对仓库有写权限,又不能给每个人在服务器上建立账户,那么提供 SSH 连接就是唯一的选择了。我们假设用来共享仓库的服务器已经安装了 SSH 服务,而且你通过它访问服务器。
有好几个办法可以让团队的每个人都有访问权。第一个办法是给每个人建立一个账户,直截了当但略过繁琐。反复运行 adduser
并给所有人设定临时密码可不是好玩的。
第二个办法是在主机上建立一个 git
账户,让每个需要写权限的人发送一个 SSH 公钥,然后将其加入 git
账户的 ~/.ssh/authorized_keys
文件。这样一来,所有人都将通过 git
账户访问主机。这丝毫不会影响提交的数据 — 访问主机用的身份不会影响提交对象的提交者信息。
另一个办法是让 SSH 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权。只要每个人都能获得主机的 shell 访问权,任何可用的 SSH 授权机制都能达到相同效果。
http://git-scm.com/book/zh/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E9%83%A8%E7%BD%B2-Git
相关推荐
4 2 在服务器上部署 Git 4 3 生成 SSH 公钥 4 4 架设服务器 4 5 公共访问 4 6 GitWeb 4 7 Gitosis 4 8 Gitolite 4 9 Git 守护进程 4 10 Git 托管服务 4 11 小结 5 分布式 Git 6 Git 工具 7 自定义 Git ...
4 2 在服务器上部署 Git 4 3 生成 SSH 公钥 4 4 架设服务器 4 5 公共访问 4 6 GitWeb 4 7 Gitosis 4 8 Gitolite 4 9 Git 守护进程 4 10 Git 托管服务 4 11 小结 5 分布式 Git 6 Git 工具 7 自定义 Git...
使用Gitblit :在Windows2008 r2上部署Git Server
9.4: 部署Git版本控制系统 、 优化Web服务器 、 总结和答疑.docx
Centos7 部署Git远程服务器完整高清版,亲测可用 ,
(使用--prefix参数指定Git的安装路径,git默认的命令都安装在/usr/local/bin目录下,因此如果这里指定的目录非/usr/local/那么如果不设置相应的环境变量git将不可用。因此,尽量指定这个安装路径)
服务器中拉取git数据,直接一键部署,节约了大量打包上传过程中的时间消耗,能方便的从git远程拉数据,然后部署。
(内含最新Git-2.20.1安装包) 接触到的git,摸索几天,发现要成功再本地部署git还是挺麻烦的,通过这两天不停的试验,收货颇丰,有幸将其稍作整理,把复杂问题简单化,我把本地部署的全套流程都实地测试了一便,自...
Window系统下快速搭建git服务器,附带git安装包及sourcetree安装包及安装教程等..
这是我自己在ubuntu上搭建我们公司的git服务器,然后总结的文档!
支持多用户上传不同的git服务器,方便代码的多服务器部署!
git服务器的下载的安装包,详细的安装细节请baidu
Linux系统上部署git服务器。
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接班人!
centos7安装部署gitlab服务器,1. 安装依赖软件2.设置postfix开机自启,并启动,postfix支持gitlab发信功能3.下载gitlab安装包,然后安装4.配置GITLAB
gitee+企业微信 git自动构建部署+通知
辅助部署:在服务器上使用git安全部署助手-源码 为早期的公司开发人员提供安全的部署过程。消除情况,服务器出现故障助手可以处理的可能状态列表
部署成web即可,方便地搭建git server服务器
git的自动部署工具开发,就是通过网络连接git服务器,从git服务器上获取源代码,然后下拉到客户端,再进行自动化部署
Git_Win64_部署本地服务,使用Windows创建的局域网Git服务器,方便管理vs项目代码所有的安装包,安装查看教程2。