centos中git 创建仓库和本地调试与错误分析

此贴为

CentOS下Git服务器搭建与客户端(windows和centos)搭建(http://blog.csdn.net/slovyz/article/details/48028109)后续完善版本


1.创建仓库

cd /home/data/git/             #此为我自己的仓库地址,根据自己情况自行更改

git init --bare project         #创建git 版本库,默认初始化为空,project为仓库名,可以自定义,如(project.git....)

chown -R git:git project    #赋与用户权限

=========================================================================================

2.创建git钩子

cd project/hooks                #hooks为钩子所放文件夹

vim post-receive

#!/bin/sh
unset GIT_DIR
NowPath=`pwd`
echo "now path is :"$NowPath
GitPath="/home/www/project"                      #project为web目录
echo "git path is :"$GitPath
cd $GitPath
echo "cd git path"
git add . -A && git stash # remove local changes
git pull origin master # pull data from master
# the follow line is also ok:
# git add . && git fetch origin && git reset --hard origin/master
echo "git done"
cd $NowPath
echo "fine"
# --- Finished
exit 0

保存,退出

chown git:git post-receive

chmod 755 post-receive

=========================================================================================

3.克隆仓库

打开web目录

cd /home/www/

git clone /home/data/git/project                   #克隆仓库

正克隆到 'project'...
warning: 您似乎克隆了一个空版本库。
完成。

[root@bogon www]# chown -R www:develop project/
[root@bogon www]# chmod -R 770 project/                                #注意一定要给web目录赋予770权限,如果在上传文件时一直报错,一定跟用户和用户组和770权限有关

=========================================================================================

4.本地克隆

damon@DESKTOP-IKUPC6T MINGW64 ~
$ cd /f/project/

damon@DESKTOP-IKUPC6T MINGW64 /f/project
$ git clone git@yourip:/home/data/git/project
Cloning into 'project'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

在本地库上传一个文件测试钩子是否成功

damon@DESKTOP-IKUPC6T MINGW64 /f/project/project (master)
$ git add 1.txt

damon@DESKTOP-IKUPC6T MINGW64 /f/project/project (master)
$ git commit -m "1"
[master (root-commit) eec0431] 1
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 1.txt

damon@DESKTOP-IKUPC6T MINGW64 /f/project/project (master)
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 192 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: now path is :/home/data/git/project
remote: git path is :/home/www/project
remote: cd git path
remote: fatal: bad revision 'HEAD'
remote: fatal: bad revision 'HEAD'
remote: fatal: Needed a single revision
remote: You do not have the initial commit yet
remote: From /home/data/git/project
remote:  * branch            master     -> FETCH_HEAD
remote:  * [new branch]      master     -> origin/master
remote: git done
remote: fine
To git@your ip:/home/data/git/project
 * [new branch]      master -> master

无报错,就证明已经上传成功了,在登上服务器看


已上传到web目录中,大功告成


不过在实际使用的时候,有人反馈说会有permission denied之类的事情。
这种事情大多发生在你Web Service使用的用户和git push的用户不一致的情况下。一般解决思路是这样的。首先把git用户加入web用户组,比如usermod -a -G web git.比如你把目标目录放在了/var/www/html/your_git下,那么你要检查下/var,/var/www,/var/www/your_git三个目录的权限是否至少开到了770上.然后还要考虑是否有SELinux在挡道,一般restorecon -R /var/www 下就可以了.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值