天天看點

[CodeVersion--GIT]windows上git環境配置相關

簡述

git原本在linux使用應當更流行的,目前windows的支援也很好了。git做代碼版本控制有很多優勢,至于和svn的比較,網上資源很多,這兩種都用,覺得都不錯的。

軟體

windows下需要安裝下windows版本的msysgit,另外還安裝了TortoiseGIT:

[CodeVersion--GIT]windows上git環境配置相關

軟體的安裝就不用多說了,直接一路安裝即可,速度也很快的。

場景

這裡是指已經配置好了git server了,code repository都放在了git server了,現在使用的windows PC就是一個用戶端,本地可以擷取server的代碼,在本地進行開發調試和測試,然後将代碼可以commit到server端。

本地的一些設定

環境變量配置

TortoiseGIT貌似會自動設定好windows的環境變量的,而GIT的bin目錄中的許多可執行工具的路徑并沒有添加到環境變量,如我的GIT的bin目錄路徑添加到系統環境變量為:

[CodeVersion--GIT]windows上git環境配置相關

這樣,之後通過在windows的指令行終端下輸入ssh-keygen等指令時就能起作用了,不然會提供找不到指令之類的提示。

SSH配置

SSH RSA key生成,用ssh-keygen生成即可。

Git環境配置

$ git config --global user.name "username"
$ git config --global user.email emailaddress
           

public key添加

登陸git伺服器,将ssh-keygen生成的public key添加即可。

注意:其實從上面的SSH配置,Git環境配置,到這裡的public key添加,都是對于linux下使用而言的,在windows下使用TortoiseGit并不是用的這個ssh-keygen生成的key的。是以從SSH配置開始的内容對windows下使用應當沒有用,不過已經做過了,也不妨礙,先那樣吧。

Windows下的Key生成與使用

其實用的是TortoiseGit的PuttyKeyGen工具來生成的Public/Private的一對Key。

[CodeVersion--GIT]windows上git環境配置相關

打開之後直接點選Generate來幫助生成一對Public/Private Key(在生成過程中,需要在該界面上不斷晃動滑鼠,生成速度就會很快,感覺其内部随機數是取的滑鼠的位置值……):

[CodeVersion--GIT]windows上git環境配置相關

生成之後:

[CodeVersion--GIT]windows上git環境配置相關

分别點選其中的Save public Key和Save private key,儲存這一對Public/Private Key,具體的存儲位置自己選擇就好。

這樣,有了這對key,将其中的public key添加到git server的頁面。然後使用TortoiseGit進行git clone操作:

[CodeVersion--GIT]windows上git環境配置相關

在Load Putty Key的位置加載剛才儲存的private key,這樣點選OK,即可成功從git server進行check out了!

commit-msg添加

commit-msg添加到C:\Program Files\Git\share\git-core\templates\hooks。

問題

git did not exit cleanly (exit code 128)

使用TortoiseGIT的git clone操作:

[CodeVersion--GIT]windows上git環境配置相關

開始上圖中的Load Putty Key是需要勾選的,但是我用的SSH public key,并沒有生成什麼Putty Key(Putty是用來遠端安全連接配接的,即SSH連接配接)。然後從網上找了下用TortoiseGIT工具生成putty key,不過覺得沒什麼用才對。然後點選OK,出現如下錯誤:

[CodeVersion--GIT]windows上git環境配置相關

關閉之,console界面顯示git did not exit cleanly (exit code 128),于是查找該問題,做如下處理:

- 滑鼠右鍵 -> TortoiseGit -> Settings -> Network

- SSH client was pointing to C:\Program Files\TortoiseGit\bin\TortoisePlink.exe

- Changed path to C:\Program Files (x86)\Git\bin\ssh.exe

這樣再試就變成上圖的Load Putty Key變灰的形式了。

不過這裡的處理并沒有幫我解決問題,是以又改回去了。

Permission denied (publickey)

繼上面問題之後,繼續用TortoiseGIT進行git clone,然後……然後還是沒有成功,提示如下資訊:

Permission denied (publickey).
fatal: Could not read from remote repository.
           

很明顯,似乎是我本地的SSH public key不對,嗯,明明配置并添加到server的project頁面了啊,本地也儲存了該SSH public key的xxx.pub了的。

問題原因:就是上面的public key添加部分提到的,實際上用TortoiseGit并不用這個Key,因為TortoiseGit操作時還需要一個private key,是以必須用PuttyKeyGen工具來生成public/private key pair了。