git服务器搭建+上传代码
git服务器搭建
下载git
apt-get install git //ubuntu
创建git专用用户
sudo adduser git
创建登陆证书
将所有登陆用户的id_rsa.pub中的公钥放入/home/git/.ssh/authorized_keys文件内,一行一个。
创建一个仓库
git init --bare myrepo.git
裸仓库中包含了.git仓库的大部分内容,但是这只个记录记录的目录,并不对文件进行保存。不过这里我用了普通的仓库。
git init
修改文件权限
将/etc/passwd中的
git:x:1001:1001:,,,:/home/git:/bin/bash
修改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
客户端上传代码
clone
git clone git@serverIP:/REPO_PATH/
git hooks
其实写到这里会有一个问题,这里能clone下来,但是当git push时,会遇到服务器端只有log改变,但是没有合并到主分支中。必须要用git reset –herd回退才行。所以我查阅了资料之后用git自己的hooks进行触发接收事件:post-reveive。
#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd /DESTINATION_PATH/
/usr/bin/git reset --hard
这里其实还会碰到一个问题,如果在shell脚本中直接写:
cd /DESTINATION_PATH/
/usr/bin/git reset --hard
是会无法达到效果的,因为其实git操作会有GIT_DIR环境路径的,所以需要unset去除环境变量。