yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install -y git
安裝完成後,可經過 git --version
驗證 git 安裝是否成功php
git --version git version 1.8.3.1
爲 Git 建立單獨的系統用戶組和用戶,提升系統的安全性。git
# user-gourp 替換爲您想建立的用戶組,通常 git 便可 groupadd user-group
# username 替換爲您的 Git 用戶名 # user-gourp 替換爲您建立 Git 用戶組 adduser username -g user-gourp
# username 替換爲您的 Git 用戶名 passwd username Changing password for user username. New password: Retype new password: passwd: all authentication tokens updated successfully.
若是是正式服務器,爲避免被攻擊,密碼強度請設置的強一點web
倉庫能夠建立在任意位置,若是系統盤緊張,能夠建立在掛接盤或其餘目錄apache
本文以建立在 home 目錄下爲例安全
# 切換至 home 目錄 cd /home # 建立 git_repository 目錄 mkdir git_repository # 切換至 git_repository 目錄 cd git_repository # 建立一個裸的 git 倉庫 --bare 是表明建立裸倉庫,這個參數必定記得帶上 git init --bare demo.git # 把 demo.git 目錄賦權給您建立的 Git 用戶 # username 替換爲您建立 Git 用戶名 # user-gourp 替換爲您建立 Git 用戶組 chown -R username:user-group demo.git # 文件只有文件全部者或同在一個用戶組下的用戶可讀,可寫,可執行,其餘用戶只有讀權限 chmod 774 -R demo.git
原理是建立收到提交請求時執行的腳本,這樣當你在本地倉庫執行git push後就會觸發 post-receive 這個腳本。bash
# your-git-repository-path 替換爲您 git_repository 路徑 cd /your-git-repository-path/demo.git # 切換目錄至 hooks cd hooks # 建立 post-receive vi post-receive
#!/bin/sh unset GIT_DIR # 您項目的工做目錄 ProjectPath="/var/www/demo" # 定義日誌目錄 LogPath="/your-git-repository-path/project.git/hooks" # 輸出日期到日誌 echo -e "\n================= `date +"%Y-%m-%d %H:%M:%S"` ===============\n" >> $LogPath/auto-sync.log 2>&1 # 自動同步方法 # 1. 直接拉取併合並 git pull origin master >> $LogPath/auto-sync.log 2>&1 # 2. 拉取最新版本至本地,不自動合併 # git fetch --all # git reset --hard origin/master echo "====================================================== " >> $LogPath/auto-sync.log 2>&1
這裏有2個問題未解決服務器
定義日誌目錄,若是定義 hooks 外層,則沒法寫入。賦權整了一整也沒弄出來ssh
根據 服務器自動部署項目之GitHooks神器 所說,用 git fetch 而非 git pull 實現。 區別在於:curl
這裏就有個問題,若是開發者在提交過程出現失誤,使用git reset復位後,如今遠端的代碼版本低於web端的代碼版本,再使用pull的時候就不能實現和開發者本地的代碼的同步。因此這裏使用fetch後,在強制使用reset實現web端的代碼版本指針和git服務端的一致。(若是在本機可使用stash,而後pull,而後drop剛纔stash的內容)工具
他這段話意思是明白了,可是沒明白具體操做,望高手指點。
# username 替換爲您建立 Git 用戶名 # user-gourp 替換爲您建立 Git 用戶組 chown username:user-group post-receive chmod -R 774 post-receive
本文自動代碼同步的語言爲 php,其餘語言類同,請本身切換服務器目錄
# 切換至 apache 項目目錄 cd /var/www # your-git-repository-path 替換爲您 git_repository 路徑 # project-name 切換爲clone 後您須要的項目名稱 git clone /your-git-repository-path/demo.git project-name # 賦權 # username 替換爲您建立 Git 用戶名 # user-gourp 替換爲您建立 Git 用戶組 # project-name 替換爲clone 後的項目名稱 # 賦權775 其餘用戶可讀可執行,不然項目可能啓動不了 chown -R username:user-group project-name chmod -R 775 project-name
各操做系統工具不一致,能夠用工具,命令行同步到本地.
連接地址:
# username 替換爲您建立 Git 用戶名 # your-git-repository-path 替換爲您 git_repository 路徑 # server 能夠是 IP,也能夠是域名 # port 當您修改了端口時須要,未設置爲空便可 ssh://username@server:port/your-git-repository-paht/demo.git
示例:
ssh://test@192.168.0.111/home/git_respository/demo.git
可用工具,也可命令提交代碼自服務器,這裏就很少說了
錯誤日誌可查看 auto-sync.log
# your-git-repository-path 替換爲您 git_repository 路徑 cat /your-git-repository-paht/demo.git/hooks/auto-sync.log
廣告欄: 歡迎關注個人 我的博客