搭建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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章