服务器上的 Git - 在服务器上部署 Git
在服务器上部署 Git
开始架设 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 授权机制都能达到相同效果。
服务器上的 Git - 在服务器上部署 Git相关推荐
- GIT 在服务器上布署 本地布署
GIT 在Linux & windows安装部署 1) 安装git一.Linux部署 git [root@bjoss03 ~]# yum install git 2) ...
- 如何将git服务器同步到本地文件夹,使用git在服务器上部署git仓库并实现提交代码时同步代码到生产环境...
最近由于需要对正在运行的系统进行新功能添加,本来是可以通过github进行代码维护,但是由于这个项目涉及一些问题,目前还不能开源,所以只能是手动覆盖bug文件,生产环境上的代码反而是最新的了. 之前有 ...
- git项目初始上传服务器,快速架设一个使用 SSH 的 Git 服务
Git 是非常流行的分布式版本控制工具,很早以前就从 Subversion 转到 Git 了.现在每天用的 Xcode日常开发,测试和应用部署也都是使用 Git,而且除了版本控制功能之外,也可以使用 ...
- git学习——服务器上的 Git
服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日常的工作.然而,如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取改变,但是我们不鼓励这样做 ...
- 如何查看git服务器上的文件在哪里,查看git远程服务器地址
查看git远程服务器地址 内容精选 换一换 云堡垒机与LDAP服务器对接,认证登录系统的用户身份.本小节主要介绍如何配置LDAP域认证模式.不支持一键同步LDAP服务器用户.不能添加两个相同的LDAP ...
- 怎么用git将本地代码上传到远程服务器_TortoiseGit将本地git仓库上传到远程git服务器方法...
以前为了图省事,通过TortoiseGit创建本地仓库(与git服务器无连接),对于个人使用确实比较方便,commit,revert,diff之类的功能都能够使用,并且速度也很快的.代码开发到一定阶段 ...
- 怎么用git将本地代码上传到远程服务器_git命令 将本地代码上传到远程服务器...
git命令将本地代码上传到远程服务器,首先你需要在远程服务器创建仓库. 1.添加README.md文件,初始化git,这样在本地文件夹下会生成README.md和.git(隐藏文件)两个文件.就是将这 ...
- window服务器上搭建git服务,window server git!!!
先给大家看一个高大上的,这是我给我公司配置的,小伙伴们都说好! 阿里云的2012server 基于这篇大神的教程,我把服务端搭建好了. 传送门,当然我还是自己做个笔记的好. 1.下载java,并安装 ...
- 在自己的服务器上搭建git仓库服务器(本地推送到远程仓库、远程仓库推送到本地)
文章目录 Git服务器 一.安装Git 二.配置Git 1.创建Git用户 2.仓库初始化 三.使用仓库 1.本地推送到远程仓库 2.远程仓库推送到本地 总结 Git服务器 一般,我们编写项目,都会保 ...
最新文章
- 快速解决mongodb出现id重复问题
- 2018微信年度数据报告:00后最爱表情捂脸哭 80后呲牙笑
- pythonif语句缩进_Python中多行IF语句缩进的代码样式?
- IO:Reactor和Proactor的区别
- 微软企业库4.1学习笔记(十)企业库的设计
- 模块简介与matplotlib基础
- ModuleNotFoundError: No module named '_tkinter'
- python apply函数取数据中的后四位_python 实现rolling和apply函数的向下取值操作
- Spring异步切面源码解析
- windows7 XP 如何安装netbeui协议
- 【FPGA】QuartusII_13.1安装及破解
- 安居客头部买房部分书写
- CentOS 7 GNOME经典桌面 拼音输入法设置
- Android GPS应用开发
- 2018蚂蚁金服Java开发实习生一面面经
- 2022-4-23基于单片机的酒驾检测报警系统(MQ3酒精传感器)(风吹摇铃 奔赴星海)
- 最短路径算法|Dijkstra‘s Algorithm
- IE浏览器退役,终究还是被市场淘汰!
- 比ping更强大的fping
- 玩转python网络爬虫 黄永祥_玩转Python网络爬虫
热门文章
- Effective Modern C++ Item 27 熟悉依万能引用型别进行重载的替代方案
- common.reg
- pandas分组计算平均值_python – Pandas:如何按符号分组并按n行取平均值
- Intel 3945ABG用OmniPeek 4.1抓包破解WEP
- C#中读取XML文件方法
- Nvidia AGX Orin MAX9296 GMSL 载板设计要点
- 翻译:Firefox for Pentester: Privacy and Protection Configurations
- Codeforces科学刷题指南,一图一表便够了
- 历史遗留问题:处理了null的脏数据 可是什么动作会产生null了?
- 大学物理---统计物理(热学部分)