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


 

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

  Windows下git工具,這里選擇msysGit,版本為msysGit-netinstall-1.8.1.2-preview20130201。因為Git本身是運行在Linux下的,所以要想在Windows環境下使用,必須構建一個與Linux一樣的虛擬環境。msysgit是 Git 版本控制系統在 Windows 下的版本,msysGit  作為 Window 平台下的原生程序。所以每一個要連接Git server的windows客戶端必須要在本地windows下安裝msysGit。

  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 git@192.168.10.49: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]
  members = Administrator@CANDLE-PC
  writable = hello

  初始化完成hello版本庫。然后通過windows客戶端msysGit進行clone,並提交文件如下:

  git clone git@192.168.10.49: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/Administrator@CANDLE-PC.pub這名字不一致,改成一致即可。

       <2>git clone路徑問題,通常我們都是采用全路徑,git clone git@192.168.1.100:/home/git/repositories/hello.git,這里訪問可能報上名的錯誤,換成這樣,直接訪問庫文件目錄git clone git@192.168.1.100:hello.git 即可!

  B、執行 git push origin master的時候,報錯

  error: src refspec master does not match any.

  error: failed to push some refs to 'git@192.168.1.100:hello.git'

  解決方案:第一次提交時,因為當前是一個空項目,commit后面跟一個參數-a,git commit -a 提交當前repos的所有的改變

  【第一次提交】 

  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

 

  

  

  

  

  

  

 


免責聲明!

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



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