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