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 [email protected]

创建git服务器远程仓库

  • 进入 /opt/git 目录, 如没有,创建之
  • 建立仓库文件夹,比如:

    # path: /opt/git $ mkdir gitdemo

  • 初始化为远程仓库

    $ git init --bare

上面的步骤已经完成了git远程仓库的创建,此时你只要将你本地的git代码仓库 git remote add [email protected]:/opt/git/gitdemo,便可提交与更新代码了。

比如我机器上的开发目录为:~/www/gitdemodev, 进行下面操作:

$ cd ~/www/gitdemodev
$ git init
#建一个文件,写点东西进去
$ touch README | echo ‘hello git‘ > READEME
$ git add README
$ git remote add origin [email protected]:/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 
时间: 2024-11-06 13:01:24

Git Server & Git Hook的相关文章

搭建Git Server

windows上如何搭建Git Server Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用.那么私有项目,如何用Git进行代码版本控制呢?我们可以自己构建Git服务器.一般来说,在Linux上搭建Git的教程比较多,但是如何在Windows Server平台下搭建Git服务器呢? 对于很多.NET用户来说,代码编写的工具是Visual Studio,该工具是不支持SSH协议的,通过搜索和对比,发现Gi

已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步代码时,还是提示输入密码?

GitHub虽好,但毕竟在国内访问不是很稳定,速度也不快,而且推送到上面的源码等资料必须公开,除非你给他交了保护费:所以有条件的话,建议大家搭建自己的Git Server.本地和局域网服务器都好,不信你试试,那速度,怎一个爽字了得! 默认情况下,使用TortoiseGit同步代码,每次都需要输入用户名和密码,但为了方便可以在客户端创建ssh密钥,用于服务器端和客户端的认证(详细过程大家可参考这里),但有时会出现“ 已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步

Git Server搭建

本文原文出处: http://blog.csdn.net/bluishglc/article/details/49310125 严禁任何形式的转载,否则将委托CSDN官方维护权益! 1 参考 所有相关细节均可以从该文档出获取: http://git.oschina.net/progit/4-%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git.html# 2 安装 Git并不存在Server端和Clint端之分,在Git Server上安装的也还是G

.net版Git Server --- bonobo

官网地址: https://bonobogitserver.com/ Demo: http://demo.bonobogitserver.com/Home/LogOn  登入admin:admin Code: https://github.com/jakubgarfield/Bonobo-Git-Server  安装 以下步骤是在 Windows 2008 Server and IIS 7下的安装.对于更高版本的平台也同样适用 (Windows Server 2012 and IIS 8.0+)

ubuntu Gitolite管理git server代码库权限

公司代码库用Git,全部用SSH认证,多个代码库多个用户,权限管理是个头疼的问题,今天终于有空测试下Gitolite, Gitolite是在Git之上的一个授权层,依托sshd或者httpd来进行认证.(概括:认证是确定用户是谁,授权是决定该用户是否被允许做他想做的事情). Gitolite允许你定义访问许可而不只作用于仓库,而同样于仓库中的每个branch和tag name.你可以定义确切的人(或一组人)只能push特定的"refs"(或者branches或者tags)而不是其他人.

Bonbo Git Server

Install This page covers simple Bonobo Git Server installation. Be sure to check prerequisites page before installation and for other sections visit the documentation page. The following steps covers an installation with Windows 2008 Server and IIS 7

使用Gitblit 在windows 上部署你的Git Server

Gitblit: 在windows 上部署你的Git Server 前言 之前在dudu的文章里看到过用bonobogit 部署在 IIS 7.5 上的Window 平台的git 服务器.学着部署使用了一段时间,发现总是有那样和这样的问题.Bonobogit对Windows要求的平台也高,于是又在网上找了一下,发现其实还是有不少软件支持在Windows平台上部署git Server 的. Gitblit Gitblit 是一个使用Java来管理Git的软件,其本身有很多特性分支.关于Gitbli

Setup Git Server in CentOS 6.3

0. Environment: Server machine: CentOS 6.3 x86 Client machine: Windows 10 Pro x86_64 1. Install ssh server [server machine shell]#yum install openssh openssh-server#chkconfig sshd on #/etc/init.d/sshd start 2. Create user git [server machine shell] #

在阿里云上布置git server

前言 东莞,晴,26至32度. 一直以为都是使用SVN Server作为私用的版本号控制器.随着Git的大行其道.近期由于项目须要,也试着在阿里云上部署Git Server.这里由于团队人员少.我採用免费版的GitStack, 官方主页:点击打开链接. 为什么採用GitStack 事实上.GitServer的工具真的非常多. 比如Bonobo Git Server:GitBlit:等. 採用GitStack主要就是省事.直接在官方主页下载程序.大约90多M.然后.按照下例步骤安装: 1. 双击程