1.首先服务器和客户端都需要安装 git,这个就不说了.
创建 git 用户
2.在服务器上
# 创建git服务器
cd /www/gitBase
git init --bare www_lib.git # 创建裸仓库,用作git服务器
chown -R git:git www_lib.git
# 初始化站点目录
cd /www/wwwroot/
git clone /www/gitBase/www_lib.git www
# 如果站点目录不为空
cd /www/wwwroot/www
git clone --no-checkout /www/gitBase/www_lib.git tmp
mv tmp/.git . # 将.git管理文件移动到 www目录
rmdir tmp # 没有用了,可以删掉
git reset --hard HEAD # 初始化版本
#之后就可以将www目录里面的加入版本库提交了
#eg: git add *; git commit -m"初始化" ; git push;
#接下来配置自动同步
cd /www/gitBase/www_lib.git/hooks/
vim post-receive
#-------写入post-receive-----
#!/bin/bash
cd /www/wwwroot/www
sudo git reset --hard # 注 1
unset GIT_DIR # 还原环境变量
git pull origin master
#chown -R www:www * # 将站点文件所有者改为www
#------end------
#保存之后 记得给post-receive权限
chmod +x post-receive
usermod -a -G www git # 将git用户加入到www用户组 避免站点目录没有写入权限
windows工作区 撸代码的地方
git init
git pull git@your_ip:/www/gitBase/www_lib.git
注1:
sudo git reset --hard是解决报错Your local changes would be overwritten by merge. Commit, stash or revert them to proceed,这是因为拉取代码时发现本地代码有过修改,所以提示你提交一下项目目录代码,但我们并不要提交,于是使用sudo git reset --hard可以放弃项目目录修改(其实不是修改,只是跟git上的不同),让拉取的代码覆盖项目目录的代码,实现硬更新。
异常问题
1.不能自动更新
切换到 git 用户,到站点目录 /www/wwwroot/www 下
su git
cd /www/wwwroot/www
git pull origin master
出现如下提示:
![错误提示](https://img-blog.csdnimg.cn/20191205152434551.png)
很明显这是文件权限问题, 执行
chown -R git:git .git
至此一个单人的git服务器完成.