一、安装git
yum –y install git
初始化一个空仓库
先创建一个目录用来存放git仓库,然后执行以下命令,创建一个git仓库
git init –bare liong.git
二、创建一个用户专门管理git服务
[root@localhost githouse]# groupadd git
[root@localhost githouse]# useradd git -g git
设置git用户密码
设置git仓库的用户和组
[root@localhost githouse]# chown git:git -R ./liong.git/
三、用git用户检出并提交代码
在window系统检出后,提交一个index.html到git仓库,然后在linux上的/var/www下检出
出现以下窗口
格式 git clone git@ip:服务器上的git仓库路径,从根目录开始
进入到liong文件夹,新增一个index.html文件提交上去
先设置一下邮箱和用户名
git config --global user.email "you@qq.com"
git config --global user.name "liong"
在linux上的/var/www克隆liong.git,能看到我们刚才在window上提交的index.html
四、使用SSH管理git
由于git用户能远程登录到我们有服务器,会对服务器的安全造成威胁,所以改用ssh管理git。
git用户禁用shell
打开/etc/passwd文件
找到git,类似以下
git:x:1003:1003::/home/git:/bin/bash
改为如下图所示
git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
git-shell: Git自带的git-shell简单工具把git用户的活动限制在仅与Git相关的操作, 把它设为git用户登入的shell,那么该用户就不能拥有主机正常的shell访问权
创建window下的密钥对
在window主机任何目录下右键-->选择git bash here,然后执行 ssh-keygen –t rsa命令,如下图所示:
把window下的公钥文件id_rsa.pub导入到/home/git/.ssh/authorized_keys,目录和文件不存在则创建
把公钥传到linux上然后导入authorized_keys里
[root@localhost .ssh]# cat win7.pub >> authorized_keys
设置/home/git目录的所有文件的用户和组都是git
在window下打开git bash 输入克隆命令和git地址,把linux创建版本库拉取下来
git clone git@192.168.160.168:/data/githouse/liong.git
五、代码实时更新
假设/data/www/liong设置为apache虚拟主机的目录
先在项目目录下克隆liong.git
克隆时提示要输入密码,那是因为在linux没有创建密钥对,所以不能克隆
创建密钥对,并导入到/home/git/.ssh/authorized_keys文件中
再次执行克隆命令
进入到liong仓库下的hooks目录
是web网站项目的路径
创建一个post-receive脚本,写入以下代码,赋予可执行权限
#!/bin/sh
unset GIT_DIR
git --work-tree=/data/www/liong checkout -f
git pull
注:/data/www/liong是虚拟主机路径(改成你自己的路径)
把虚拟主机的项目所有者改为git,这样git用户才有权限对它操作
在window新建一个login.php,pull后,在linux上的/data/www/liong目录下可以看到刚才提交的login.php文件