最近将博客从Typecho搬至Hexo,考虑到国内访问Github Page那众所周知的速度,因此我决定在自己的小水管上建一个私有git仓库,然后将hexo文件同时deliver到两个仓库上。安全+速度,岂不美哉- v -

环境

1
CentOS

1. 创建用户

1
2
3
sudo adduser git
sudo addpw git
# 然后输入两遍密码。

2. 建立Git仓库

1
2
3
4
5
6
7
8
# 切换git用户
sudo su git
# 切换环境为/home/git内
cd
# 创建文件夹
mkdir soulterBlog
cd soulterBlog
sudo git init --bare myBlog.git

到这一步,可能会出现git用户使用sudo导致的错误,因为git用户无权使用sudo命令。
下面是解决方案↓

1
2
3
su root
chmod u+w /etc/sudoers
vi /etc/sudoers

在文件末尾,添加

1
git ALL=(ALL) ALL

保存退出,再

1
sudo git init --bare myBlog.git

即可。

至此,创建了裸仓库。当push到这个仓库后,会得到一个pack文件,但是此时还看不到具体的工作文件。

1
2
3
4
# 当前在服务器裸仓库内
cd hooks
# 创建打开post-receive
vim post-receive

输入

1
2
#!/bin/sh
git --work-tree=[工作空间地址] --git-dir=[git仓库地址] checkout -f

保存退出。

再push之后,理论上就可以在工作空间地址看到push上来的文件了。
然鹅,push时也有可能报错…
such as:

1
......failed to unpack

很大原因是git目录或者工作空间目录没有足够权限。挂一个777权限就行。