Git Server & Git Hook
http://ju.outofmemory.cn/entry/16893
我喜欢 github,我现在的个人代码全部是托管在上面了,但是一些公司或者某些项目不适合放入github中,你希望能有一个完全私有的仓库,如果你有一台服务器,这显然是很容易办到的事。
下面简单的描述我在某个项目中布署的一个git服务,并且本地提交更新后,服务器将自动更新代码到在线代码的仓库。
创建用户并使客户机可通过密钥登录服务器
服务器中操作:
root 用户ssh登录服务器,创建一个新用户用来给git登录及其操作,比如这里我创建一个名为“git”的用户:
$ sudo add user git
进入到 /home/git 文件夹中,查看是否有 .ssh/ 目录, 如没有:
$ mkdir .ssh
进入 /home/git/.ssh 文件夹中,创建文件 authorized_keys
等待
客户机中操作:
进入 ~/.ssh/ 目录,查看是否有 id_rsa.pub 文件,如没有:
$ ssh-keygen
一路回车,完成后,便可发现 ~/.ssh/ 目录中有 id_rsa.pub, 复制其内容,粘贴到上面操作服务器的 authorized_keys 文件中
测试是否密钥登录成功
$ ssh git@yourserverip
创建git服务器远程仓库
- 进入 /opt/git 目录, 如没有,创建之
建立仓库文件夹,比如:
# path: /opt/git $ mkdir gitdemo
初始化为远程仓库
$ git init --bare
上面的步骤已经完成了git远程仓库的创建,此时你只要将你本地的git代码仓库 git remote add git@yourserverip:/opt/git/gitdemo,便可提交与更新代码了。
比如我机器上的开发目录为:~/www/gitdemodev, 进行下面操作:
$ cd ~/www/gitdemodev
$ git init
#建一个文件,写点东西进去
$ touch README | echo 'hello git' > READEME
$ git add README
$ git remote add origin git@yourserverip:/opt/git/gitdemo
$ git commit -m 'first commit'
$ git push origin master
现在你已经本地的代码成功的提交到了远程仓库中,只需在你团队成员电脑上作相同操作,便可利用git协同开发了,注意把各自电脑的 id_rsa.pub 内容复制进服务器的 authorized_keys 文件中。
git hook 自动布署代码
假设你的项目也是跑在此台服务器上,那自动布署代码就很简单了,比如你的在线服务代码在 /var/www/demo 文件夹中。
你先初始化代码库:
$ git clone /opt/git/gitdemo /var/www/demo
然后你可以通过 git pull 来更新代码。
当然这样是手动了,我想要的是本地提交更新后,服务器能自动的 git pull代码到最新,于是我们就要借助 git hook了。
进入到 /opt/git/gitdemo 文件夹中,会发现 .git/hook 文件夹在里面,进入到 hook 中,里面有很多的 sample 脚本,这里我们只需要用到 post-update。
$ mv post-update.sample post-update
$ vim post-update
可以看到里面其实就是一些shell脚本,你要做的就是把 git pull写进去。当用户提交后,便会调用post-update脚本的。
这些脚本显然是可以做很多事的,只要你想得到,要了解各脚本何时调用,google吧。
【注】服务器中与git用户有关的文件夹及文件,请:
$ chown -Rh git:git /your/git/dirs
Git Server & Git Hook的更多相关文章
- git server side hook 试用
git 的hook 是一个很方便的功能,我们可以使用hook 做好多处理,比如client side hook 进行 提交格式校验,server side 进行ci/cd 处理 测试使用docker- ...
- # 基于Gitolite搭建Git Server - 支持SSH&HTTP
Git, 一个分布式的版本管理工具,我认为其革命性的点:在于改变了用户协作的方式,使得协作更简单. 下面讲述 使用一个开源软件 Gitolite搭建一个Git Sever, 并给了一个推荐的团队协助方 ...
- 搭建Git Server
windows上如何搭建Git Server Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用.那么私有 ...
- Ubuntu 搭建简单的git server
Git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议. 在此,我们将会讨论那些协议及哪些情形应该使用(或避免使用)他 ...
- 局域网git服务器搭建(基于win7 + bonobo git server)
公司内网有一台win7系统的服务器. 准备在上面部署git后台, 用于内网项目版本管理. 搜索了相关资料后, 在根据公司环境, 决定采用win7 + bonobo git server + git的方 ...
- 使用Gitblit 在windows 上部署你的Git Server
Gitblit: 在windows 上部署你的Git Server 前言 之前在dudu的文章里看到过用bonobogit 部署在 IIS 7.5 上的Window 平台的git 服务器.学着部署使用 ...
- Windows下安装 msysGit 以及初始化 Git server环境
Windows下git工具msysGit使用以及Git server初始化 Windows下git工具,这里选择msysGit,版本为msysGit-netinstall-1.8.1.2-previe ...
- Ubuntu server 搭建Git server
Ubuntu server 搭建Git server,git相比svn,最主要就是分布式了,每个客户端用户的本地都是一个版本管理控制器. Ubuntu server 版本为12.04 搭建步骤如下: ...
- UBUNTU上的GIT SERVER
Git是一个开源的版本控制系统,由Linus Torvalds主导,用于支持Linux内核开发.每一个Git工作目录,都是一个完整的代码库,包含所有的提交历史.有能力跟踪所有的代码版本,而不会去依赖于 ...
随机推荐
- linux学习笔记一----------文件相关操作
一.目录结构 二.文件管理操作命令(有关文件夹操作,使用Tab键自动补全文件名(如果多个默认第一个)) 1.ls 查看目录信息:ls -l 查看目录详细信息(等价于ll 某些系统不支持) 2.pwd ...
- UVa OJ 180 - Eeny Meeny
Time limit: 3.000 seconds限时3.000秒 Problem问题 In darkest <name of continent/island deleted to preve ...
- import numpy 和 from numpy import * 的区别
对于 import xxx 使用函数的方法为 x'x'x.Afunc 而对于 from xxx import * 调用函数的方法为 Afunc
- TCP/IP协议栈概述
TCP/IP协议栈概述 这篇文章虽然只是很粗浅的介绍了ISO/OSI 网络模型,但确实把握住了关键点,某种意义上,简单回顾一下就可以加深对TCP/IP协议栈的理解. 原作者:阮一峰 链接: http: ...
- SQL注入原理小结
今天,一基友问我一个问题说:为什么SQL注入要加单引号,这个当时我一时也回答不上,怪就怪自己理论太菜,不过回去仔细思考了一下,觉得这个问题也是蛮简单的. 首先大家应该明白的一点就是SQL注入的目的:加 ...
- nginx 支持pathinfo的配置文件
location ~ \.php { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; set ...
- B0BO TFS 安装指南(转载)
TFS2008安装过几次,每次都遇到点麻烦,结合网上的一些经验总结一下: Windows SharePoint Services 安装 Windows SharePoint Services你有两个选 ...
- TCP,IP,HTTP,SOCKET区别和联系
物理层-- 数据链路层-- 传输层-- TCP协议 会话层-- 我 们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便 ...
- Matlab图像处理入门
1. Matlab基础 1.1 数据格式 Matlab默认的数据格式为双精度浮点数的矩阵或数组,同时支持其它数据类型.Matlab将单变量看作1´1的数组.Matlab支持的数据类型如下: 索 ...
- 完美串(区间dp)
完美串 Description 爱美之心人皆有之,GG也不例外.所以GG他对于完美串有一种热衷的爱.在GG眼中完美串是一个具有无比魅力的01子串.这个子串有之其魅力之处,对它取反后水平翻转,它又和它原 ...