搭建Git服务器个人仓库以及配置自动同步钩子函数 - Go语言中文社区

搭建Git服务器个人仓库以及配置自动同步钩子函数


 

 

1、首先在网站站点下创建XXX项目并创建一个空仓库

mkdir xxx && cd xxx

#创建空仓库
git init

2、修改xxx文件权限为git用户所有

#切换到xxx 同级目录下执行
chown -R git:git xxx

3、配置xxx/.git 文件夹下的config,如下截图

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
[receive]
	denyCurrentBranch = ignore

4、本地电脑 git clone 远程仓库

$ git clone git@服务器ip:/yyy/yyy/yyy/html/xxx/.git

5、往本地仓库添加项目文件 执行一系列git操作提交到远程仓库

#进入xxx 目录下
git add . #添加所有文件到本地仓库暂存区

git commit -m '初始化xxx项目'  #提交到本地仓库


git push origin master   #push到远程仓库

 

服务器进入xxx目录下查看  git log 有如下提交记录则代表成功

 

此时查看服务器xxx目录是没有文件的,需要在执行git reset --hard 之后才能同步到服务器

#进入xxx 目录下执行
git reset --hard

此时用到git钩子函数解决本地自动同步到服务器问题

6、实现自动同步到站点目录(xxx)目录下

# 进入服务器端,进入裸仓库 
cd /yyy/yyyy/yyyyy/xxx/.git

#再进入 .git hooks
cd hooks

//创建一个post-receive文件
vim post-receive

#输入以下内容
#!/bin/bash
git --work-tree=/yyy/yyyy/yyyyy/xxx checkout -f

#保存并退出,并将改文件用户及用户组改成git
chown git:git post-receive

//由于该文件其实就是一个shell脚本文件,应该为其设置可执行权限
chmod +x post-receive

配置钩子同步函数完成。

测试完成,自动同步成功,配置完成!

如果你在Git推送的工程中发现推送成功 但是在xxx目录下并没有自己的代码,这时候你可要注意了:这是由于文件夹的权限的原因造成的! 假设你的xxx目录的所属的用户组为root,你可以将你的git用户加入这个组;并给git添加写入权限,或者其他解决方法,反正你要服务器上的git用户有权限进入xxx文件夹。

给xxx目录授权775:命令:chomd 755 xxx

出现以下截图情况则代表xxx项目下的子文件夹不是git用户拥有权限,按如下修改重新push即可

#1、修改xxx 文件夹以及下面的所有文件的所属用户为 git   -R 为递归
chown -R git xxx

#2、修改xxx 文件夹以及下面的所有文件的所属用户组为 git
chgrp -R git xxx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/denglii903/article/details/100942207
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 22:34:30
  • 阅读 ( 992 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢