由于Linux等对于Git的完美支持,使得在其上搭建环境非常的方便,但是Git这么方便使用且强大的工具,相比较于SVN等版本控制器显得特别的突出,SVN是集中式版本控制工具,而Git是分布式的版本控制工具。当前大部分的开源网站项目代码大多数都是基于Git托管的,如,GitHub。
既然Git是这么优秀的,那么对于基于windows的用户来说是不是显得比较棘手,尤其是对于新手呢?在以前确实是这样的,网上有很多这样的文章,在windows上搭建一个linux环境,然后在这个环境之上再使用Git,如,Cygwin。但是现在我们完全使用另外一个免费的Copssh软件,它的相比于Cygwin的好处大家可以上上网查找。
在这篇文章中,我们搭建的环境如下:
服务器端:(windows server 2003 Enterprise Edition Service Pack 2 ----32位)
Git(下载msysgit),我使用的版本是Git-1.8.4-preview20130916.exe
Copssh(下载Copssh),我使用的是Copssh_3.1.4_Installer .zip,这个是免费版本的,不提供图形界面的,当然你可以购买有图形界面的,请支持正版,不过以前的版本也是可以的,有时间和精力可以自己试验。
Gitextension(下载Gitextension),这个可以不用安装,在服务器端我们可以使用命令来创建仓库,如果要使用图形化的界面就可以安装这个。在这里我们不安装。
客户端:(widows 7 旗舰版 service pack 1)
Git(下载msysgit),我使用的版本是Git-1.8.4-preview20130916.exe
Putty(下载Putty),我使用的版本是putty-0.63-installer.exe,注意在下载的时候选择“A Windows installer for everything except PuTTYtel” ,当然你也可以根据需要单独下载需要的部分,但是还是建议下载完全的版本。
Gitextension(下载Gitextension) 我使用版本是GitExtensions24703SetupComplete.msi,一般下载最近 版本 的即可。不过需要注意的是如果以前安装过这些软件,请提前卸载干净,程序生产的文件也要一起删除掉,建议以关键字“git”搜索磁盘,然后删除和上述软件相关的文件,避免在后面使用过程中出现不必要的错误。另外需要提醒的一点是,最好不要同时安装Putty和TortoiseGit,主要原因(http://guides.beanstalkapp.com/version-control/git-on-windows.html#installing-git)中“ In caseyou have installed TortoiseGit”部分有讲到
- 一、服务器端的环境配置。
我的电脑————〉管理————〉系统工具——————〉本地用户和组——————〉用户。然后在显示区域右键,选择新用户选项,添加新用户,在这个界面上有“用户下次登陆时修改密码”选项,默认选中,那么我们新增用户结束之后回到显示区域,必须重新在修改一次密码,找到刚刚新建的用户dev然后右键修改密码,修改密码即可,然后在左边选择“组”选项,把刚刚新建的用户添加到Administrators组之中。
1.2 Git安装(Msysgit)安装:我的Git安装都是选择默认配置,如下图所示:
(安装位置的选择默认即可,当然网上有很多说法是安装路径不能包含空格,那是其他的配置方式会出现,在这里选择默认即可)
上面选项中选择时建议选择第一个(use git bash only)。其他选项自己看下面的解释,有兴趣可以上网查找。
1.3 Copssh安装:
安装路径默认即可,若不想放在C盘,其他的分区之下也是可以的。
在这里需要一个账户,我们系统中的账户(administrator等),这里主要完成的是新建立一个账户。我们可以不用理会这个,直接安装即可。
上图显示我们需要激活一个账户,如下图
打开激活向导,在激活面板中我们选择刚新建的用户(dev),有可能还需要添加上域名,如下图:
单击下一步之后会提示激活成功,可以进行ssh连接了。
最后我们还需要检查对应的服务是否启动,这个是非常重要的,默认是没有自动启动服务的,当然你可以重启系统之后服务将会自动启动,这里我们直接在系统的服务对话框中启动服务即可,如下图:
一定要保证服务“Open SSHD”服务是启动的,如上图所示。启动服务的时候可能出现错误(错误编号是1069),出现这种错误,可能由于我们新建立的账户在第一次使用的时候需要重置密码,如果我们重置密码错误重现,那么我们双击服务“Open SSHD”服务,在服务属性中选择“登陆选项卡”,在登录身份中我们要保证账户时我们刚刚建立的账户(dev),如下图所示:
1.4 服务器端配置SSH
我们找到Copssh 的安装目录(C:\Program Files\ICW\etc)在安装目录下我们可以发现ssh_config和sshd_config 文件,使用编辑器打开这两个文件(使用记事本打开的时候可能出现乱码),在ssh_config 文件中我们可以修改端口号(默认22),同时要将"PasswordAuthentication" 设置为“no” ,在这两个文件中必须保持修改是一致的,如下图:
上图示ssh_config 文件修改的地方,下图是sshd_config文件修改的地方,我们保证这两处修改一样,保存在这两个文件中的修改。
现在我们可以在客户端的命令行模式下利用telnet命令来测试服务是否启动,如果成功之后我们就进行下一步,不成功我们就要解决问题:
telnet ip地址 端口
1.5 配置Repositories目录。
默认情况存库(repositories)的目录会在安装目录下home文件下创建一个用户文件夹,在用户文件夹中创建仓库(如,C:\Program Files\ICW\home\dev),我们怎么修改这个目录呢?我们首先在在目录(C:\Program Files\ICW\etc)下找到passwd文件,使用编辑器打开,我们将会看到下面的内容:
dev:unused_by_nt/2000/xp:1032:545:U-NETLAB-WIN2003\dev,S-1-5-21-3662530224-4034114269-2516470779-1032:/home/dev:/bin/bash
现在我们只需要替换 /home/dev 为“/cygdrive/C/repositories” 其中“C:\”使用“/cygdrive/C/”来表示的。最后修改之后的内容如下:
dev:unused_by_nt/2000/xp:1032:545:U-NETLAB-WIN2003\dev,S-1-5-21-3662530224-4034114269-2516470779-1032:/cygdrive/C/repositories:/bin/bash
接下来我们在C盘下面新建文件夹repositories,然后在这个文件夹下面创建文件夹“.ssh”,如果我们还是按照windows下面的右键创建的话肯定是不行的(可以自己尝试一下)。我们在windows的命令行模式下输入下面的命令:
cd C:\repositories
mkdir .ssh
之后在repositories文件下面就可以看到 .ssh文件夹了,在这个文件下面,我们创建一个空的文本文件(authorized_keys),这个文件主要是用来存储客户端的公钥,稍后我们会用到。
二、客户端配置
客户端主要安装putty、gitextension、git这三个软件,git的安装和在服务器端的安装是一样的,putty的安装没什么可说的,全都是默认设置,当然你可以选择其他的安装路径,至于gitextension的安装,如果我先安装了git那么在安装时有两个选项“msysgit”和“kdiff3”,我们只选择kdiff3,其他的一路next就行。安装完成之后,点击右键我们将会看到如下图所示的功能菜单:
2.1 使用putty产生密钥对。
首先在“开始”————〉“所有程序”————〉“putty”————〉“puttygen” ,然后点击“generate”,不断地在空白区域移动鼠标,程序将会生成rsa密钥,这个过程可能持续一分钟吧,主要看电脑的情况决定了。然后单击“save private key” 把私钥保存在本地磁盘的一个位置之下。
上图中最上面的是公钥,第二个密钥注释,下面连个是密码,我们可以选择密钥生成的长度,默认即可。
上图是生成的密钥对私钥的存放位置,网上有很多做法是把私钥上传到服务器上,在本地保存的是公钥,这中做法有违密钥安全的,公钥在传输过程中还不害怕被窃取的,但是私钥就不同了。如果要详细了解可以上网搜索网络安全相关的知识。
2.2 接下来我们要打开putty下pageant,把我们刚才生成的私钥文件加载进去,是他在后台进行身份验证。
打开pageant之后,我们单机“add key”然后找到刚保存的密钥文件git_access_key.ppk文件,把密钥加载进去,然后关闭这个窗口,在系统托盘中我们可以看到它的图标。
2.3 上传公钥到服务器端
打开puttygen导入我们刚保存的密钥文件,复制显示区域的公钥内容,可以通过文本或者邮件的形式发送给服务器端,在服务器端我们打开位置C:\repositories\.ssh下的authorized_keys文件,用编辑器打开,然后把公钥内容复制进去即可,这个文件中可以保存很多的公钥文件的。
2.4 测试ssh连接
在客户端打开putty ,点击session,在右边设置IP地址和端口号,在connection下的SSH下的Auth,选择private key的位置,然后点击下面的Open ,如下图所示:
设置IP地址和端口号
设置私钥文件
第一连接的时候因为本地没有存储主要的密钥,因此询问是否保存,选择“是”,在客户端C:\Users\用户名\.ssh下的文件kown_hosts文件中就包含了服务器的秘密,我们可以 自己看一下,如果找不到那个文件,在C盘下搜索一下就能找到,
当连接成功之后,就可以使用linux命令,如ls 、 pwd等。
三、在服务器端创建仓库
在服务器端右击“我的电脑”,选择“属性”下“高级”选项卡中的“环境变量”,在系统变量下点击“新建” ,变量名为 “GIT_SSH”,变量值是“C:\Program Files\ICW\Bin\ssh.exe” ,同时我们还要修改Path环境变量,在其变量值后添加“;C:\Program Files\Git\bin;C:\Program Files\Git\libexec\git-core”。
接下来我们创建一个bare repository ,首先在C:\repositories下创建一个文件夹 project_test,git,然后点击右键,选择Gti bash,输入下面的命令:
git init --bare
之后就可以看到在该目录下多了很多的文件。
四、gitextension配置
在客户端我们使用的是Gitextension ,因此在Gitextension中我们要配置认证方式为putty,并且在其中制定putty的路径,如下图:
Git Extension 配置
按照上图配置putty,putty的路径为putty的安装路径。
五、客户端Clone服务端仓库
在客户端单击右键,在右键菜单中有“GitExt Clone…” 单击之后出现下图的画面,首先就是指定要克隆的档案库,克隆的地址格式如下:
ssh://user@IP地址:/~/project_test.git 其中/~/ 表示我们在服务器端在passwd文件中配置的目录(C:\repositories),当然我们可以在客户端连接上服务器,通过下面的指令就能够获取到/~/的路径:
cd ~
pwd
十分重要的一点时,在克隆的时候,我们要单击“加载SSH秘钥” ,找到我们前面保存的秘钥文件(私钥),然后单击克隆,将会弹出下面的画面:
在客户端,我们成功的克隆了仓库。
注:我们克隆的时候可能出现“bash:gt-upload-pack 命令没有找到”的错误,这个是由于我们修改了环境变量,但是服务还没有重新启动,我们只需要重新启动OpenSSH服务及可以了。可能还有其他的问题,上网搜一下。
六、VS2010配置git环境
在vs2010,如果我们安装了gitextention 那么在菜单栏将会出现Git菜单。单击工具菜单,然后选择“扩展管理器”,在弹出的对话框中搜索git source control provider 插件,然后重启vs2010即可。
重启之后可能需要我们输入用户名,邮件等信息,我们要保证下面界面上没有红色的出现:
然后我们新建一个web 项目,项目的位置为刚刚我们从服务器端克隆 的文件夹下(project_test),我们会发现在解决方案中出现了加好,表示本地仓库新增加的文件,如下图:
然后我们在vs上找到Pending Changes(master) 界面,如下图所示,在上面显示了文件状态,在comment中填写信息(必须填写),然后选择我们要提交的文件,最后点击上面的“commit”,提交我们的修改。
接下来我们要把我们的修改提交到服务器,首先在git菜单下找到push 菜单单击,如下图,在弹出的推送对话框中我们填写push地址,和我们刚才克隆的地址是一样的,不过这次就不需要再加载SSH秘钥。当涉及到多人或者团队开发的时候,我们还要注意推送的分支,这个大家可以自己在以后专门学习git的使用,详细的了解。
最后我们单击推送,弹出下面的对话框就说明我们推送成功了。
七、实现Pageant自动加载秘钥文件。
Pageant一直都是在后台默默的运行着,主要负责和服务器端进行身份验证,但是我们每次在启动Pageant后都需要手动的加载秘钥文件,这其实是一个比较烦的过程,我们怎么能够使其自动的完成呢?
首先我们找到Pageant的快捷方式,然后找到他的属性,在弹出的对话框中,选择“快捷方式”选项卡,找到“目标(T)”位置,应该显示的是程序路径(例如):
"D:\Program Files\PuTTY\pageant.exe"
我们在后面添加上私钥文件git_access_key.ppk文件,如下:
"D:\Program Files\PuTTY\pageant.exe" "D:\Git\git_access_key.ppk"
八、Pageant开机启动。那么在每次在单击这个快捷方式的时候,我们只需要输入私钥文件的密码即可(当然私钥文件是可以没有密码的)。其实我们也可以设置Pageant开机启动的,目前还没找到可以直接把私钥文件密码保存,启动的时候直接加载,期望这一步都能省了最好,有谁知道可以告诉我(谢谢!)
经过我的验证,在生成秘钥对的时候,如果不输入密码,那么在Pageant启动的时候是不会弹出对话框提示你输入密码的,那么我们就可以完成开机启动,让他默默的工作。
首先在系统(win7)的开始(或者开始菜单的所有程序中)找到“启动”菜单项,点击右键“打开”,然后把Pageant的快捷方式粘贴到这里就可以了。完成之后,可能360等安全工具会提示你“开机启动项修改了”,你只需要同意就行,如果你不是很放心,那么你在命令行下输入:msconfig 。找到启动选项卡,你就可以看到Pageant的开机启动项,如下图:
(结束)
参考文章:
http://www.nubaria.com/en/blog/?p=633
http://guides.beanstalkapp.com/version-control/git-on-windows.html