先放幾個相關的參考資料:
http://www.jianshu.com/p/6db06489ba3d
http://www.open-open.com/lib/view/open1356608472385.html
http://blog.chinaunix.net/uid-28621021-id-3487552.html
Git服務器耑的架設
公鈅先不必糾結,先集中精神把git搭好再說。
網上一大堆資料, 比較準確的部分就是那個用yum命令安裝git, 大家都知道用yum install...
說說創建賬號:建立個用戶組,例如group_git,再建立用戶名,例如user_a,那麽命令應該是
groupadd git_group useradd -M user_a # 把user_a拉進用戶組git_group usermod -G git_group user_a
出於安全考慮,要進行一些用戶權限的額外限制
# 進入用戶權限管理文档 vim /etc/passwd
在文档裡找到對應用戶名開頭那一行,例如user_a,將之改成類似下方的樣子:
user_a:x:1001:1002::/home/git用戶組目錄:/usr/bin/git-shell
其中x:1001:1002這一段不用管,主要改後邊的用戶組目錄和git-shell,防止其登錄linux系統shell
然後找個放git用戶組倉庫的地方,注意:說的就是用戶組倉庫,而不是特指某用戶的倉庫,比如/home/git
cd /homemkdir git
緊接著建立一個用戶倉庫a.git
mkdir a.git # 進入該倉庫目錄 cd a.git # 初始化倉庫 git --bare init
開發人員客戶耑
假設你想把git目錄放在d盤的git下,那麽你先拿滑鼠進到git目錄裡面,右鍵點空白處拉出菜單,點擊git bash here,如果看不到,你得檢查git是否安裝在你本機
進到這個黑窗口的git shell之後
# 創建源碼目錄 mkdir 源碼目錄名 cd 源碼目錄名 # 初始化git倉庫 git init # 建立一個遠程目錄別名,以免在本文中 git push 那一步卡住 # 多說一句,如果此時你服務器的SSH的耑口變了,就寫完整的ssh表達式,例如 # ssh://user_a@www.wkwkk.com:新耑口/home/git/工程目錄名.git git remote add origin user_a@www.wkwkk.com/home/git/工程目錄名.git # 準備添加所有當前的文档,如果這個時候你什麽源碼文档都沒塞進去,你到push那一步就會有報錯提示 git add . # 準備代碼信息和說明 git commit -m "在這裡寫你的代碼提交說明,比如兩個控制器" # 向服務耑推送數據,此時如果報錯,可查看報錯信息,以本文下方問題解決方案來對號入座 git push origin master # 往回拉源代碼 git pull origin master
其中,www.wkwkk.com是個域名舉例,你得改成自己git服務器的ip或域名。
很多人不知道ssh表達式的寫法, 特別是不知道耑口和用戶名怎麽也寫在表達式裡, 那麽仔細看看上文代碼的注釋吧。
相關命令
其中修改指定用戶密碼的指令是
passwd 用戶名
不想每次都輸入ip地址,那麽可以修改linux的DNS解析文档
vim /etc/hosts
在文档裡添加類似内容,和windows的hosts一樣玩
127.0.0.1 www.wkwkk.com
找安全日志的命令
vim /var/log/secure
問題解決方案
SSH耑口修改
出於安全考慮,SSH可能不是22號耑口,那麽盡量使用ssh://完整表達式,例如
git remote add origin ssh://user_a@www.wkwkk.com:耑口號/home/git/工程目錄名.git
出現錯誤 error: insufficient permission for adding an object to repository database
這個錯誤會在開發者使用git push也就是推内容的時候觸發, 原因是服務耑那邊沒有賦予足夠的權限,這個問題個人開發者很少遇到, 遇到多人協作的情況時狀況百出, 原來公司的項目經理就遇到過,被氣的脖子上起了個大筋包。也搞不明白爲什麽偶爾會出現權限不足的狀況,後期干脆自己寫了個go的定時賦權限的小程序給解決掉了。
有關這個錯誤,其他站點也有對應的資料,可參考:
http://blog.chinaunix.net/uid-12076195-id-3479088.html
實際嘗試,這個辦法只能臨時解決問題,到自己設定的git工程目錄裡面去運行以下命令
# 假設當前在用戶組目錄之前的目錄位置,例如用戶組目錄爲/home/gituser,則當前路徑應爲/home chgrp -R git用戶組名 git用戶組目錄名 chmod -R g+rwX git用戶組目錄名
順帶提一句,以下命令可以改動git倉庫所有者:
# 嘗試進入用戶組目錄來改動git倉庫的所有者 cd 用戶組目錄名 chown -R git用戶名:git用戶組名 工程名.git
如果只是因爲新增一個用戶,沒有設好他的權限,那麽只需要用戶組目錄下面,單獨運行上一行命令就可以解決問題了