天天看点

[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了。