##简述
git作为代码版本管理工具相当流行,目前Windows系统的git支持也很好了。git做代码版本控制有非常多的优势,和svn等其他传统工具的比较的文章网上很多,可以搜索了解。git和svn我自己都使用过,也都用来管理过中型的项目的代码资源,觉得都不错的。但是随着时间的推移,目前基本全部都使用git了。
##Windows的git的下载安装
Windows下需要安装Windows版本git for Windows(https://gitforwindows.org/),(早前的Windows下的git是msysgit)。另外还可以安装TortoiseGIT图形化工具,对于不习惯使用命令行的可以用TortoiseGIT来完成git的各个操作:
软件的安装就不用多说了,直接一路安装即可,速度也很快的。
##使用场景说明
这里是指已经配置好了git server了,代码仓库都放在git server上,现在使用的Windows PC就是一个客户端,本地可以获取server的代码,在本地进行开发调试和测试,然后将代码commit到server端。
##Windows本地的一些基础配置
###环境变量配置
TortoiseGIT会自动设置好Windows的环境变量,而GIT的bin目录中的许多可执行工具的路径并没有添加到环境变量,如我的GIT的bin目录路径添加到系统环境变量为:
这样,之后通过在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添加,都是对于命令行模式下使用而言的,在Windows下如果使用TortoiseGit图形化界面来执行git的操作,就不是用上面的这个ssh-keygen命令生成的key。因此从SSH配置开始的内容,对于使用TortoiseGit的话,对Windows下使用应当没有用。
###Windows下的Key生成与使用
使用TortoiseGit的PuttyKeyGen工具来生成的Public/Private的一对Key。
打开之后直接点击Generate来帮助生成一对Public/Private Key(在生成过程中,需要在该界面上不断晃动鼠标,生成速度就会很快,感觉其内部随机数是取的鼠标的位置值……):
生成之后:
分别点击其中的Save public Key和Save private key,保存这一对Public/Private Key,具体的存储位置自己选择就好。
这样,有了这对key,将其中的public key添加到git server的页面。然后使用TortoiseGit进行git clone操作:
在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:
开始上图中的Load Putty Key是需要勾选的,但是我用的SSH public key,并没有生成什么Putty Key(Putty是用来远程安全连接的,即SSH连接)。然后从网上找了下用TortoiseGIT工具生成putty key,不过觉得没什么用才对。然后点击OK,出现如下错误:
关闭之,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了。
更多精彩内容请关注“技塑未来”微信公众号。