安装服务器端git
参考文章:
https://www.jianshu.com/p/a8886a5f46d6
https://www.jianshu.com/p/7a695fe06b18
https://blog.csdn.net/glx490676405/article/details/78329004
一:服务器端安装git
二:git实现自动同步到站点目录(www),使用钩子
安装git:
① yum安装方式
#yum install -y git
②安装后查看git版本
# git version
③创建 git 用户,并为 git 用户设置密码
# id git #查看git用户是否存在
# useradd git #创建git用户
# passwd git #为git用户创建密码 (zkm)
④服务器端创建 Git 仓,设置 /git/data/test.git 为 Git 仓库 ,然后初始化项目测试目录,然后把 Git 仓库的 owner 修改为 git
# mkdir -p /git/data/test.git #创建仓库目录
# cd /git/data/ #进入data目录
# git init --bare ./test.git
# cd /git/ #切换到git目录
# ll #查看data项目文件夹的拥有者
drwxr-xr-x 3 root root 4096 Jan 13 13:08 data #拥有者是root用户名
# chown -R git:git data #将拥有者改为git用户
# ll #再次查看data项目文件夹的拥有者
drwxr-xr-x 3 git git 4096 Jan 13 13:08 data #拥有者是git用户
以上操作完后,pc客户端git克隆一下服务器端git操作,如下图 :
注意(克隆过程中会提示,选择yes即可,因为服务器没有配置SSH连接,需要输入git用户的密码,git/zhimakaimen),无需输入密码需要再配置,本次先不涉及
pc客户端git连接服务器端git效果
(我们往远程仓库推送了index.php文件,虽然提示推送成功,但是我们现在在服务器端还看不到效果,心理总是不爽。想在站点中马上看到,那自动同步就派上用场了)
以上已经实现本地克隆、推送成功,但推送成功后服务器不会自动更新
需要实现自动同步到站点目录(www),自动同步功能用到的是 git 的钩子功能
服务器端:
进入裸仓库:/git/data/test.git/
# cd /git/data/test.git/
# cd hooks
创建post-receive文件,输入内容
# vim post-receive
git --work-tree=/root/www/html checkout -f
保存退出后,将该文件用户及用户组都设置成git
# chown git:git post-receive
由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限
# chmod +x post-receive
最后将项目更目录设置git权限,否则git无写入权限
chown git:git root
如果你在Git推送的工程中发现推送成功 但是在www目录下并没有自己的代码,这时候你可要注意了:这是由于文件夹的权限的原因造成的!
假设你的www目录的所属的用户组为root,你可以将你的git用户加入这个组;并给git添加写入权限,或者其他解决方法,
反正你要服务器上的git用户有权限进入www文件夹
以上操作结束后,在pc客户端创建两个文件,同步到git服务器,然后去服务器根目录/root/www/html中查看,可以看到提交的文件