先放幾個參考資料,用瀏覽器打開備用
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搭好再說。
先建立個用戶組,例如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
注意:如果這個目錄你給寫錯了,比如寫成/user/bin/git-shell,那麽/user目錄並不存在時,就會不停地報permission denied的錯誤。
然後找個放git用戶組倉庫的地方, 說的就是用戶組倉庫,而不是特指某用戶的倉庫,比如/home/git
cd /home mkdir 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或域名
相關命令
其中修改指定用戶密碼的指令是
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
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 # 如果只是因爲新增一個用戶,沒有設好他的權限,那麽只需要用戶組目錄下面,單獨運行上一行命令就可以解決問題了