Windows下git工具msysGit使用以及Git server初始化
1、Windows下安裝msysGit
安裝過程非常簡單,确認安裝選擇盤符之後,會跳到如下開始初始化本地git環境:
初始化過程完成之後,就會出現于linux一樣的指令行,如下:
如果安裝完之後,指令行視窗沒有跳出來,請到安裝目錄下點選msys.bat,如F:/msysGit/msys.bat。
2、生成SSH Key
在本地用戶端通過指令行直接生産SSH Key,
$ ssh-keygen -t rsa
由于我這裡已經生成了,是以這裡提示這個密鑰已經存在!此時會在~/.ssh/下生成兩個密鑰id_rsa,id_rsa.pub
id_rsa,私鑰
id_rsa.pub 公鑰,這個要儲存Git server上,作為通路Git server的權限。
3、初始化管理者,并啟動Gitosis
在windows用戶端,将公鑰傳輸到遠端的Git server上,如下:
通過指令在用戶端上将公鑰遠端傳輸到線上
$ scp ~/.ssh/id_rsa.pub git@server:/tmp
此時在Git server的/tmp目錄下應該就能看到這個公鑰了。
在Git server上操作如下:
/tmp$ sudo chmod a+r ./id_rsa.pub //先給這個公鑰所有權限
啟動Gitosis指令,完成如下圖:
/tmp$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub
啟動Gitosis之後,初始化gitosis-admin.git庫檔案
此時去/home/git/repositories下可以看到gitosis-admin.git庫檔案,在gitosis-admin.git下可以看到相關内容如下:
權限控制在gitosis.conf,公鑰SSH Key檔案放在/home/git/repositories/gitosis-admin.git/gitosis-export/keydir下,以後所有的用戶端使用者的公鑰都放在這個檔案下
另外,給/home/git/repositories/gitosis-admin.git/hooks/post-update權限,如下:
$ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
到此管理者初始化完成,Git Server配置完成
4、從Git server上clone版本庫到本地
接下來就是在用戶端遠端通路版本庫,在windows下開啟msysGit,進入指令視窗
加入想把版本庫存在本地f盤,如下:
$ cd /f
$ git clone [email protected]:gitosis-admin.git //在本地f盤下可以看到gitosis-admin檔案目錄
如上顯示,表示clone完成!
5、測試
在Git server上建立一個版本庫如下:
$ su git
$ mkdir /home/git/repositories/hello.git
$ sudo chown -R git:git /home/git/repositories/hello.git
$ cd /home/git/repositories/hello.git
$ git --bare init
切換root使用者操作
cat /home/git/repositories/gitosis-admin.git/gitosis.conf
新增通路版本hello的權限,編輯gitosis.conf檔案,修改如下:
[gitosis]
[group gitosis-admin]
members = Administrator@CANDLE-PC
writable = gitosis-admin
[group developers]
writable = hello
初始化完成hello版本庫。然後通過windows用戶端msysGit進行clone,并送出檔案如下:
git clone [email protected]:hello.git
完成版本clone。
測試送出檔案,如下:
【第一次送出】
git add a.txt
git commit -a -m 'add a.txt' //第一次送出時,因為目前是一個空項目,commit後面跟一個參數-a,git commit -a 送出目前repos的所有的改變,否則會在git push origin master時報錯
git push origin master
【第二次送出】commit不需要加參數-a
git add a.txt
git commit -m 'add a.txt'
git push origin master
6、問題
A、clone的時候,報錯:ERROR:gitosis.serve.main:Repository read access denied
解決方案:<1>可能是git的權限配置檔案members = Administrator@CANDLE-PC,與/home/git/repositories/gitosis-admin.git/gitosis-export/keydir/[email protected]這名字不一緻,改成一緻即可。
<2>git clone路徑問題,通常我們都是采用全路徑,git clone [email protected]:/home/git/repositories/hello.git,這裡通路可能報上名的錯誤,換成這樣,直接通路庫檔案目錄git clone [email protected]:hello.git 即可!
B、執行 git push origin master的時候,報錯
error: src refspec master does not match any.
error: failed to push some refs to '[email protected]:hello.git'
解決方案:第一次送出時,因為目前是一個空項目,commit後面跟一個參數-a,git commit -a 送出目前repos的所有的改變
本文轉自一米一陽光部落格園部落格,原文連結:http://www.cnblogs.com/candle806/p/4065052.html ,如需轉載請自行聯系原作者