2013年3月11日 星期一

實作git server更新多台server


   Git

Q:什麼是Repository?
Ans:就是倉庫的意思
Q:需要做哪些基礎設定?
Ans:
git config --global user.name "Tsung"
git config --global user.email "username@email.com"
git config --global color.diff auto # git diff 要顯示顏色
git config --global color.status auto # git status 要顯示顏色
git config --global color.branch auto
git config --global color.log auto # git log --graph 會很漂亮, 感謝日落提供.
git config --global core.excludesfile ~/.gitignore # 設置忽略名單
相關連結
GitHub官網 - https://github.com/

下載git軟體  yum install git
(如有需要) 下載gitk軟體(以圖表方式顯示) yum install gitk

「server端」
  1. useradd git #新增git帳號
  2. cd /home/git/project #切換到git目錄底下的project資料夾
  3. git init --bare (單純repository)
  4. 無法在此新增檔案,只單純用在repository

「client端」

  1. useradd git #新增git帳號
  2. cd /home/git/ #切換到git目錄
  3. git clone git@192.168.10.130:/home/git/project #將server端的資料複製到client端
  4. vim test.php #新增檔案
  5. git add . #加入檔案
  6. git commit -m 'this is a test file.' #commit檔案
  7. git pull #更新server端資料
  8. git push # 將檔案上傳上去
  9. git status #查詢git狀況

注意事項:
  1. chown -R git:git /home/git/project #更改檔案目錄擁有者及群組為git
  2. git config receive.denyCurrentBranch ignore #發生錯誤,忽略server端的master
後面要加入的 re.local 以及新增機器自動判斷是否已有.git 及 拉檔案  新增排程。

# git clone 的時候會顯示資料夾是空的。
#必須新增檔案 vim test.php; git add .; git commit -a "this is a first file."; 才能push and pull
# 第一次push的時候要下 git push git@192.168.10.130:/var/www/html/project master
#

git.script
if [ -d /var/www/html/project/.git ] ; then
    echo "project存在,git資料夾有存在,開始更新網站內容。"
    cd /var/www/html/project
    git pull
else
    echo "資料夾不存在,建立網站資料"
    rm -rf /var/www/html/project
    cd /var/www/html/
    git clone git@192.168.10.130:/var/www/html/project
    exit 0
fi
service httpd start

push.script
cd /var/www/html/project
git push

#編輯排程
crontab -e 
*/1 * * * * /var/www/html/pull.script  #每1分鐘執行一次。


1 則留言:

  1. 你好方便跟你諮詢個問題嗎
    若我有三台不同ip Git Server
    我要如何做到當使用者push to a server , a server 轉push 到b/c呢?
    看了許多文章都是採用設定remote, 但不希望用此做法
    而是想讓server 收到push自動轉發

    回覆刪除