利用git管理web的发布目录代码更新

web启动用户为www-data,发布目录/var/www/ezpub,所属主组为www-data

系统为ubuntu 10.04

首先安装git服务 apt-get install git-core gitosis

设置www-data用户密码 为eztest 

切换到www-data用户

su - www-data && cd /var/www/ezpub

git init .

git config receive.denyCurrentBranch ignore && git config --bool receive.denyNonFastForwards false

cd .git/hooks  && wget http://utsl.gen.nz/git/post-update && chmod +x post-update

git add .                #添加所有文件

git commit  -am "init"

 

这样一个简单的版本库就建好了,clone地址为 ssh://www-data@SERVER_IP/var/www/ezpub

 

客户端使用

git clone ssh://www-data@SERVER_IP/var/www/ezpub

 

建立过滤规则,在发布目录下建立.gitignore文件

vi /var/www/ezpub/.gitignore
 /var/                #过滤文件夹

 /update/
 /support/

*.zip                #过滤zip,tar.gz类型文件

*.tar.gz

/test/a.sh        #过滤某个文件

!*.html            #不过滤某类文件

 

git常用的命令
    status 查看当前哪些文件做了修改

    pull   从远程版本库取数据,更新本地库为最新

    add  添加文件到索引中
   新建或修改文件后添加到索引中,如新建了文件 test.php
   git add test.php   添加单个文件
   git add test2 test3 添加两个文件
   git add *.txt  添加所有的txt文件
   git add .  添加所有文件,包含子目录,但不包含排除的目录。

    reset  重置索引内容  一般用在git add(或rm)之后。
    git reset HEAD test   撤销git add test的索引

    checkout 撤销尚未提交的更改 回复到文件未改之前状态,一般用在add 之前
     git checkout -- test  撤销对test文件的修改

    rm    从索引中删除文件
    git rm test

           commit 提交更改的记录
    git commit -m "touch a new test.php"  -m参数是为修改的记录添加标记
    git commit -am "some msg"   -a参数为提交所有更改
       git commit -m " rm test"  

    push  提交到远程管理库
   git push origin master  提交到远程的master库


   diff  查看区别
     git diff  查看working tree与index file的差别的
  git diff --cached 是查看index file与commit的差别的
  git diff HEAD  是查看working tree和commit的差别的

   log 查看提交日志

   branch 查看当前是哪个分支