打开宝塔服务器,进行操作
-
首先进入宝塔终端看有无安装git
image.png
如果没有就自行安装一下,在终端输入安装指令
yum install git
生成公钥,输入下面命令后回车三下
ssh-keygen -t rsa
查看公钥,按顺序输入下面代码,最后一个是获取密钥,cat 后面是公钥文件名
cd ~/.ssh
ls
cat id_rsa.pub
复制绿色框部分全部内容,这就是生成的SSH密钥
image.png
gitee仓库,添加公钥
进入仓库管理,部署公钥管理,点击添加公钥
image.png
宝塔安装webhook
打开软件商店,安装webhook
image.png
点击进去安装好的webhook,添加关联钩子
#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
echo "param参数错误"
echo "End"
exit
fi
#git项目路径
gitPath="/www/wwwroot/$1"
#git 网址
gitHttp="https://gitee.com/xxx/$1.git" //自己仓库的链接
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
else
echo "该项目路径不存在"
echo "新建项目目录"
mkdir $gitPath
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
image.png
点击查看秘钥
image.png
image.png
配置Gitee的WebHooks
进入仓库的WebHooks功能页面
image.png
这部分看图片内容弄,需要注意的是URL最后的aaa必须最后一个是仓库名,前面可以根据自己想放的位置添加父级目录
把在宝塔的秘钥连接复制过来
image.png
将Gitee仓库clone到服务器的本地目录中
- 复制仓库的下载链接
image.png
- 在宝塔面板的终端设置git
git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --global credential.helper store //会生成.gitconfig 的文件
cat .gitconfig //如果报错: No such file or directory,就用下一行的代码
cat ~/.gitconfig //显示内容
正确显示的页面
image.png
进入到 www/wwwroot 目录下(通常文件都会放这里,也可以自己选择目录),然后clone
cd /www/wwwroot/
git clone https://gitee.com/XXX/XXX.git //clone后面是下载链接
第一次clone需要输入用户名和密码,注意:输入密码的时候是看不见内容的
当clone成功后,就已经是配置好了,可以在自己电脑上传文件到配置的仓库,检查下宝塔界面的文件里仓库目录下有没有自动更新刚上传的文件
也可以用下面的方法测试
在仓库的WebHooks功能页面点击测试,进入查看更多查看结果,中间是200则代表测试成功
image.png
宝塔里查看WebHook日志
image.png
总结
把服务器和Gitee仓库绑定同步更新后,平时的代码上传更方便,更新及时,服务器也会备份上一个版本,非常的方便好用
异常处理
如果通过ftp去修改文件,在git又没有同步设置,会导致有冲突然后同步不过去
解决的方案
1、强制同步回之前的版本,需要执行的命令
git fetch --all 拉取所有更新
git reset --hard origin/master 本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件
git pul
也可以这样输入
git强制覆盖本地命令(单条执行):
git fetch --all && git reset --hard origin/master && git pull