Windows下git工具msysGit使用以及Git server初始化html
Windows下git工具,這裏選擇msysGit,版本爲msysGit-netinstall-1.8.1.2-preview20130201。由於Git自己是運行在Linux下的,因此要想在Windows環境下使用,必須構建一個與Linux同樣的虛擬環境。msysgit是 Git 版本控制系統在 Windows 下的版本,msysGit 做爲 Window 平臺下的原生程序。因此每個要鏈接Git server的windows客戶端必需要在本地windows下安裝msysGit。linux
一、Windows下安裝msysGitgit
安裝過程很是簡單,確認安裝選擇盤符以後,會跳到以下開始初始化本地git環境:windows
初始化過程完成以後,就會出現於linux同樣的命令行,以下:ssh
若是安裝完以後,命令行窗口沒有跳出來,請到安裝目錄下點擊msys.bat,如F:/msysGit/msys.bat。工具
二、生成SSH Keypost
在本地客戶端經過命令行直接生產SSH Key,測試
$ ssh-keygen -t rsaspa
因爲我這裏已經生成了,因此這裏提示這個密鑰已經存在!此時會在~/.ssh/下生成兩個密鑰id_rsa,id_rsa.pub命令行
id_rsa,私鑰
id_rsa.pub 公鑰,這個要保存Git server上,做爲訪問Git server的權限。
三、初始化管理員,並啓動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配置完成
四、從Git server上clone版本庫到本地
接下來就是在客戶端遠程訪問版本庫,在windows下開啓msysGit,進入命令窗口
加入想把版本庫存在本地f盤,以下:
$ cd /f
$ git clone git@192.168.10.49:gitosis-admin.git //在本地f盤下能夠看到gitosis-admin文件目錄
如上顯示,表示clone完成!
五、測試
在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
六、問題
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