Tegic Blog

用 Git 同步本地开发到服务器网站

在服务器上安装好git之后,新建一个git的目录

mkdir /home/git

cd /home/git

git init -bare wwwroot.git

这里初始化一个裸仓库,我的web目录是/home/wwwroot 然后在本地端打开终端执行:

cd desktop #进入到桌面

git clone ssh://root@tegic/home/git/wwwroot.git wwwroot.git

这里是用的root账户因为没有配置root的公钥,所以有安全提示需要输入yes,然后在输入密码 这样使用ssh协议从服务器上克隆裸版本库内容。

这时桌面会多出一个wwwroot.git的目录,就是克隆过来的版本库了。

这里先备份一下自己的wwwroot目录以免意外

cp -r /home/wwwroot /home/wwwroot2

然后设置钩子

cd /home/git/wwwroot.git/hooks

这里我们创建post-receive文件

vim post-receive

在该文件里输入以下内容

#!/bin/bash git –work-tree=/home/wwwroot checkout -f

保存退出

由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限

chmod +x post-receive

其中 --work-tree对应站点文件目录 然后就可以开始从本地开发了,在本地版本库工作区里开发,然后使用git push指令推送到远程裸版本库,钩子会post-receive自动生效,将文件检出到–work-tree目录里,实现同步。 因为配置git之前已经有正在运行的网站了,还不太懂怎么把现有目录同步到裸版本库。所以先把网站目录wwwroot里的网站目录先下载到本地的目录里在同步到版本库里

cd desktop

scp -r root@izww.cn:/home/wwwroot/izww.cn wwwroot.git/

PS:这里Clone过来的wwwroot.git版本库是放在桌面上的,所以修改文件需要提交之前先要进入的wwwroot.git目录再提交。

cd desktop/wwwroot.git
git add .
git commit -m "初始化文件"
git push origin master

第一次push可能会有一些提示,因为裸版本库还什么都没有,你可能需要 git push origin master 写全命令,之后就没必要了,直接git push 由于网站目录本身存在数据,访问网站看不出变化。

修改下自己的博客主题style.css然后再提交

OK!!!搞定。。