首页 » IT » 用git发布网站

利用git自动同步网站文件

Using Git to manage a web site介绍了用git管理网站的方法,以下是我在学习过程中的操作笔记。

使用git自动同步网站文件只需要简单的几步,而获益则是,每当你想把开发机上所有修改文件同步到线上服务器时,只需要简单的执行git push web,而整个过程中,你甚至不需要写一行脚本。

Step1 本地操作

$ mkdir berlinix && cd berlinix
$ git init
Initialized empty Git repository in /tmp/berlinix/.git/
$ echo "hello, berlinix" > index.html
$ git add index.html 
$ git commit -q -m "my blog site"

这一步进行了常规的git操作,新建目录,初始化git仓库,新加文件,并提交。

Step2 线上服务器

$ mkdir /www/berlinix/auto
$ mkdir web.git && cd web.git
$ git init --bare
Initialized empty Git repository in /home/bailing/web.git/
$ cat > hooks/post-receive
#!/bin/bash
GIT_WORK_TREE=/www/berlinix/auto git checkout -f
$ chmod +x hooks/post-receive

这一步创建了两个目录:

  1. /www/berlinix/auto web文件目录
  2. web.git 线上git仓库

我们把web.git的工作目录指向web文件目录,这样从本地push的文件,就能自动到web文件目录。

Step3 本地操作

$ git remote add web ssh://www.berlinix.com/home/bailing/web.git
$ git push web +master:refs/heads/master
Counting objects: 3, done.
Writing objects: 100% (3/3), 226 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://www.berlinix.com/home/bailing/web.git
 * [new branch]      master -> master

这步添加线上服务器的信息,并执行push

同步测试

在线上服务器上查看同步文件:

$ ls /www/berlinix/auto
index.html

至此,就完成了从本地git仓库,自动同步文件到线上服务器的部署。可以继续测试,新添文件。

更多的测试

在本地操作:

$ echo "HTML files generated by VimWiki" > README.txt
$ git add README.txt 
$ git commit -q -m "read file"
[bailing@taobaoring berlinix]$ git push web
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 304 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://www.berlinix.com/home/bailing/web.git
   e7a76db..f6e2c4a  master -> master

再次查看线上服务器:

$ ls /www/berlinix/auto
index.html  README.txt

冲突解决

error: Untracked working tree file 'xxx' would be overwritten by merge. Aborting

$ git pull
...
Updating 190f830..8d7e43e
error: Untracked working tree file 'libs/barcode/README_1D.txt' would be overwritten by merge.  Aborting

解决方案:

$ git fetch --all
$ git reset --hard origin/master

分享

0