CentOS下搭建Git服務器Gitosis


說明:由於條件有限,我這里使用的是同一台centos的,但教程內容基本上通用。 1.編譯安裝git git安裝教程: http://blog.haohtml.com/archives/10093
2.安裝gitosis
$ yum install python python-setuptools
$ git clone git://github.com/res0nat0r/gitosis.git
$ cd gitosis
$ python setup.py install
 
3.在開發機器上生成公共密鑰(用來初始化gitosis)
$ ssh-keygen -t rsa #不需要密碼,一路回車就行(在本地操作)
$ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上傳你的ssh public key到服務器
 
 
4.初始化gitosis[服務器端]
$ adduser git # 新增一個git用戶(先添加用戶組 groupadd git)
$ su git # 切換倒git用戶下
$ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是剛剛傳過來的,注意放在/tmp目錄主要是因為此目錄權限所有人都有定權限的
$ rm /tmp/id_rsa.pub # id_rsa.pub已經無用,可刪除.
 

 

5.獲取並配置gitosis-admin [客戶端]
$  git clone git@xxx:gitosis-admin.git  # 切換到root用戶並在本地執行,獲取gitosis管理項目,將會產生一個gitosis-admin的目錄,里面有配置文件gitosis.conf和一個 keydir 的目錄,keydir目錄主要存放git用戶名
$  vi gitosis-admin/gitosis.conf  # 編輯gitosis-admin配置文件
如果無法git clone的話,可以使用 git clone git@xxx:/home/git/repositories/gitosis-admin.git
 
# 在gitosis.conf底部增加
[group 組名]
writable = 項目名
members = 用戶  # 這里的用戶名字 要和 keydir下的文件名字相一致
# VI下按ZZ(大寫)兩次會執行自動保存並退出,完成后執行
$ cd gitosis-admin
$ git add .
$ git commit -a -m “xxx xx” # 要記住的是,如果每次添加新文件必須執行git add .,或者git add filename,如果沒有新加文件,只是進行修改的話就可以執行此句。
# 修改了文件以后一定要PUSH到服務器,否則不會生效。
$ git push

 

如果在git push的時候,遇到錯誤“ddress 192.168.0.77 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!”,解決為修改/etc/hosts文件,將ip地址與主機名對應關系寫進去就可以了。
 
注意:這里我們並沒有進行任何的修改的,現在只有一個管理git的項目。下面的為新添加項目的配置,大家經常用到的也就是下面的操作的。
 
新建項目
到此步就算完成gitosis的初始化了。接下來的是新建一個新項目到服務器的操作,如第5步中配置gitosis.conf文件添加的是
[group project1] # 組名稱
writable = project1 # 項目名稱
members = xxx      # 用戶名xxx一定要與客戶端使用的用戶名完全一樣,否則無權限操作
 提交修改並更新到git server服務端
$ git commit -a -m “添加新項目project1,新項目的目錄是project1,該項目的成員是xxx“ # “”里的內容自定
$ git push
將新創建的項目提交到git server 上進行登記。以便客戶可以操作新項目.
 
# 在客戶端創建項目目錄 (客戶端,當前用戶為 XXX )
現在回到開發者客戶端,上面創建了一個新項目project1並提交到了git server 。我們這里就創建此項目的信息.注意 項目名稱 project1要與gitosis.conf文件配置一致,
$ mkdir /home/用戶/project1
$ cd /home/用戶/project1
$ git init
$ git add . # 新增文件 留意后面有一個點
$ git commit -a -m “初始化項目project1″
# 然后就到把這個項目放到git server服務器上去.
 
$ git remote add origin git@xxx:project1.git # xxx為服務器地址
$ git push origin master
# 也可以把上面的兩步合成一步
$ git push git@xxx:project1.git master
說明:如果在執行 git push origin master 的時候,提示以下錯誤: error: src refspec master does not match any. error: failed to push some refs to 'git@192.168.0.77:pro2.git' 這是由於項目為空的原因,我們在項目目錄里新創建一個文件。經過->add -> commit -> push 就可以解決了
$ touch a.txt
$ git add a.txt
$ git commit -a -m 'add a.txt'
$ git push

 

------------------------------------------------------------------------------------------------ 如果在git clone的時候遇到“

error: cannot run ssh: No such file or directory - cygwin git

”錯誤,則表示本機沒有安裝ssh命令。安裝方法請參考: http://blog.haohtml.com/archives/13313 有時候我們要更換電腦來重新開發項目。這個時候,只需要將id_rsa私鑰放在home目錄里的.ssh目錄里就可以了。( 有時候一個人開發多個項目,這時候可能會提示id_rsa文件已經存在。不太清楚這里如何解決???) 續篇: git下添加新項目及用戶

====================================================

三、常見問題

首先確定 /home/git/repositories/gitosis-admin.git/hooks/post-update 為可執行即屬性為 0755

1. git操作需要輸入密碼

原因
公密未找到
解決
上傳id_rsa.pub到keydir並改為'gitosis帳號.pub'形式,如miao.pub。擴展名.pub不可省略

2. ERROR:gitosis.serve.main:Repository read access denied

原因
gitosis.conf中的members與keydir中的用戶名不一致,如gitosis中的members = foo@bar,但keydir中的公密名卻叫foo.pub
解決
使keydir的名稱與gitosis中members所指的名稱一致。 改為members = foo 或 公密名稱改為foo@bar.pub

3. 相關鏈接

http://blog.csdn.net/wangyuefenga/article/details/7460104 相關文檔: http://www.cnblogs.com/nasa/archive/2012/05/31/2528901.html http://www.jiangmiao.org/blog/1600.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM