git服務器搭建+上傳代碼
git服務器搭建
下載git
apt-get install git //ubuntu
創建git專用用戶
sudo adduser git
創建登陸證書
將所有登陸用戶的id_rsa.pub中的公鑰放入/home/git/.ssh/authorized_keys文件內,一行一個。
創建一個倉庫
git init --bare myrepo.git
裸倉庫中包含了.git倉庫的大部分內容,但是這隻個記錄記錄的目錄,並不對文件進行保存。不過這裏我用了普通的倉庫。
git init
修改文件權限
將/etc/passwd中的
git:x:1001:1001:,,,:/home/git:/bin/bash
修改爲
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
客戶端上傳代碼
clone
git clone git@serverIP:/REPO_PATH/
git hooks
其實寫到這裏會有一個問題,這裏能clone下來,但是當git push時,會遇到服務器端只有log改變,但是沒有合併到主分支中。必須要用git reset –herd回退才行。所以我查閱了資料之後用git自己的hooks進行觸發接收事件:post-reveive。
#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd /DESTINATION_PATH/
/usr/bin/git reset --hard
這裏其實還會碰到一個問題,如果在shell腳本中直接寫:
cd /DESTINATION_PATH/
/usr/bin/git reset --hard
是會無法達到效果的,因爲其實git操作會有GIT_DIR環境路徑的,所以需要unset去除環境變量。