`
wbj0110
  • 浏览: 1603335 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

在服务器上部署 Git

    博客分类:
  • Git
Git 
阅读更多

开始架设 Git 服务器前,需要先把现有仓库导出为裸仓库 — 即一个不包含当前工作目录的仓库。做法直截了当,克隆时用 --bare 选项即可。裸仓库的目录名一般以 .git 结尾,像这样:

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

该命令的输出或许会让人有些不解。其实 clone 操作基本上相当于 git initgit 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

 

分享到:
评论

相关推荐

    Git中文学习手册 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 ...

    git使用教程详细介绍

    服务器上的 Git 涵盖了 Git 的协议、在服务器上部署 Git、生成 SSH 公钥、架设服务器、公共访问、GitWeb、Gitosis、Gitolite、Git 守护进程、Git 托管服务等内容。 五、分布式 Git 分布式 Git 是一种工作流程,它...

    9.4: 部署Git版本控制系统 、 优化Web服务器 、 总结和答疑.docx

    2. **部署Git协议的版本控制服务器**:在数据库主机上安装`git-daemon`,配置并启动Git服务。客户端可以通过`git clone git://IP/仓库名`来克隆仓库,实现代码备份。 3. **部署HTTP协议的版本控制服务器**:安装...

    使用Gitblit 在Windows2008 r2上部署Git Server(完整版).docx

    本教程将详细介绍如何在Windows Server 2008 R2操作系统上使用Gitblit搭建Git服务器。 首先,你需要准备以下两个主要组件: 1. Java Development Kit (JDK):Gitblit依赖于Java环境运行,因此需要安装JDK。在本...

    Git Pro中文版--高清pdf

    服务器上的Git允许用户在服务器上部署Git仓库,实现多人协作和数据共享。Git支持多种协议,包括本地协议、SSH协议、Git协议和HTTP/S协议。服务器部署可以通过转移仓库目录、小型安装、生成SSH公钥、架设服务器、提供...

    git学习资料

    如何在服务器上部署Git,包括生成SSH公钥,架设服务器,公共访问,网页界面GitWeb,权限管理器Gitosis等。而在Git托管服务方面,GitHub是大家最为熟知的一个平台,如何在GitHub上建立账户、建立新仓库、导入项目,...

    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...

    pro_git_中文版本

    还讲到了在服务器上部署Git的流程、生成SSH公钥、架设服务器、公共访问、网页界面GitWeb和权限管理器Gitosis。 6. 分布式Git:解释了分布式工作流程和不同的工作流,如何为项目作出贡献,以及项目的管理。 7. 其他...

    PRO GIT.pdf

    对于团队协作,通常需要在服务器上部署Git。这涉及到选择合适的网络协议(如SSH或HTTPS)、配置服务器环境、设置权限访问等步骤。同时,Git提供了一些辅助工具,如Git Web、Gitosis、Gitolite等,帮助管理多个仓库和...

    Git使用手册

    在服务器上的Git部分,介绍了不同协议(本地协议、SSH协议、Git协议、HTTP/S协议)的优缺点,并讨论了如何在服务器上部署Git,包括转移纯目录、小型安装和SSH连接,生成SSH公钥,架设服务器,公共访问以及权限管理。...

    搭建git服务器

    - 在Ubuntu服务器上安装Git和SSH两个核心软件。 ```bash sudo apt-get update sudo apt-get install git ssh ``` 2. **添加用户和克隆Gitolite源码** - 添加一个名为`git`的新用户。 ```bash sudo adduser ...

    Git中文文档

    在服务器上部署Git涉及多个方面。Git支持多种协议,包括本地协议、SSH协议、Git协议和HTTP/S协议,每种协议都有其优点和缺点。用户可以将纯目录转移到服务器、设置小型安装、生成SSH公钥、架设服务器、设置公共访问...

    Pro.Git中文版

    在服务器上部署Git涉及到多种协议的选择和配置,每种协议有其优点和缺点。本书提供了将纯目录转移到服务器、设置小型安装以及SSH连接等操作的指南。同时,还介绍了权限管理、GitWeb和Git托管服务,如GitHub的使用。...

    linux下搭建git服务器步骤

    通过上述步骤,我们成功地在Linux服务器上搭建了一个Git服务器,并实现了客户端对远程仓库的克隆以及通过SSH公钥进行身份验证的功能。此外,还配置了自动部署代码到Web目录,大大提高了开发效率。这些步骤不仅适用于...

    git详解-PDF

    - **在服务器上部署Git**:包括将裸仓库移到服务器、设置权限等步骤。 - **生成SSH公钥**:为了安全地通过SSH协议进行数据传输,需要在本地生成SSH密钥对,并将公钥上传到服务器。 - **架设服务器**:包括安装必要的...

    git中文教程

    Git还广泛用于服务器上,这涉及到协议的选择、如何在服务器上部署Git以及如何进行公共访问。服务器上常用的协议包括本地协议、SSH协议、Git协议以及HTTP/S协议,每种协议都有其优缺点。部署Git服务器涉及把裸仓库移...

Global site tag (gtag.js) - Google Analytics