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工作目录,都是一个完整的代码库,包含所有的提交历史.有能力跟踪所有的代码版本,而不会去依赖于 ...
随机推荐
- ECSHOP编辑器Fckeditor上传图片中文名称乱码的解决方法
ECSHOP编辑器Fckeditor上传图片中文名称乱码的解决方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2015-02-11 中文名乱码是因为:FCKed ...
- Java初学(四)
一.图解二维数组 二.图解动态创建二维数组 三.杨辉三角练习: import java.util.Scanner; class Array2Demo{ //实现杨辉三角 public static v ...
- 理解模板引擎Razor 的原理(转载)
Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目.Razor Pad是一 ...
- Center os FTP配置
原文:http://www.aicoffees.com/itshare/412261137.html
- C# 获取文件MD5校验码
using System; using System.IO; using System.Security.Cryptography; using System.Text; public class M ...
- WPF 复制和粘贴
/// <summary> /// 复制或剪切文件到剪切板 /// </summary> /// <param name="files">文件路 ...
- 存储过程优点&缺点
存储过程不仅仅适用于大型项目,对于中小型项目,使用存储过程也是非常有必要的.其威力和优势主要体现在: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一 ...
- TYVJ2477 架设电话线
题目描述 Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司支付一定的费用. FJ的农场周围分布着N(1 <= N < ...
- poj.2419.Forests (枚举 + set用法)
Forests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5782 Accepted: 2218 Descripti ...
- HTML中的IE条件注释
IE条件注释是一种特殊的HTML注释,这种注释只有IE5.0及以上版本才能理解.比如普通的HTML注释是: <!--This is a comment--> 而只有IE可读的IE条件注释是 ...