天天看點

Windows下安裝 msysGit 以及初始化 Git server環境

Windows下git工具msysGit使用以及Git server初始化

  1、Windows下安裝msysGit

  安裝過程非常簡單,确認安裝選擇盤符之後,會跳到如下開始初始化本地git環境:

  

Windows下安裝 msysGit 以及初始化 Git server環境

  初始化過程完成之後,就會出現于linux一樣的指令行,如下:

Windows下安裝 msysGit 以及初始化 Git server環境

  如果安裝完之後,指令行視窗沒有跳出來,請到安裝目錄下點選msys.bat,如F:/msysGit/msys.bat。

  2、生成SSH Key

  在本地用戶端通過指令行直接生産SSH Key,

  $ ssh-keygen -t rsa

Windows下安裝 msysGit 以及初始化 Git server環境

  由于我這裡已經生成了,是以這裡提示這個密鑰已經存在!此時會在~/.ssh/下生成兩個密鑰id_rsa,id_rsa.pub

  id_rsa,私鑰

  id_rsa.pub 公鑰,這個要儲存Git server上,作為通路Git server的權限。

  3、初始化管理者,并啟動Gitosis

  在windows用戶端,将公鑰傳輸到遠端的Git server上,如下:

Windows下安裝 msysGit 以及初始化 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  

Windows下安裝 msysGit 以及初始化 Git server環境

  啟動Gitosis之後,初始化gitosis-admin.git庫檔案

  此時去/home/git/repositories下可以看到gitosis-admin.git庫檔案,在gitosis-admin.git下可以看到相關内容如下:

Windows下安裝 msysGit 以及初始化 Git server環境

  權限控制在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檔案目錄

Windows下安裝 msysGit 以及初始化 Git server環境

  如上顯示,表示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 ,如需轉載請自行聯系原作者

繼續閱讀