声明:本文的目的是提供一个在windowsXP下安装使用git的简明教程,虽然关于gitWindow下如何使用的文章很多,但是作者根据那些文章做实验发现,其中有些内容对于初学者比较晦涩,导致没有接触过的人不能做好实验,误导初学者,或者给初学者带来反面的信息,打击积极性。作者在花费了3个晚上之后终于把git的安装搞定,在此做一些记录,与大家分享。
       安装git的环境:这一部分主要从网络上获取,但是经过一些加工或修改。需要安装两个工具:
1 - GitWindows下的Git,还是msys-git比较好。
2 - SSH,可以用CopSSH,可以在Windows上启动SSH服务,而不仅是客户端。如果不知道网址,搜索一下。
 
安装这两个工具的过程没有什么难度。这里假定Git是安装在C:\Git目录下,CopSSH安装在C:\ICW目录下。安装过程中添加git用户,密码也是git默认安装的git可能不好用,需要从ssh菜单->已经激活账户中删除git,同时在电脑的本地用户和组中删除git用户,再重新建立git本地用户,授予administrator权限,在ssh的菜单中激活git用户。git已经可以从远程ssh登陆。如果在命令行中输入ssh没有发现命令,需要在系统的Path中添加C:\ICW\bin目录和C:\Git\bin目录,输入ssh [email protected]输入密码后如果能打开远程,则说明git用户ssh登陆成功。
git用户通过ssh登录以后,可以执行lscd等基本命令。但是git仍然然不能运行。所以,也就还不能通过这个ssh来发布git版本库了。要实现这个,需要做一些设置。
 
首先、需要在Git的安装目录里找到cmd目录,这里就是C:\Git\cmd了。在里面创建如下几个文件:  git, git-upload-pack, git-upload-archive, git-receive-pack。这里都没有扩展名的,主要是给登录后,由bash执行的。每个文件都只有一行,分别是:
git里写  git.cmd $*
git-upload-pack里写  git upload-pack $*
git-upload-archive里写  git upload-archive $*
git-receive-pack里写  git receive-pack $*
 
然后,就要给登录后的用户添加path了,保证上面添加的命令可以找到,并执行。找到CopSSH安装目录的etc下的profile文件。这里就是C:\ICW\etc\profile了:在文件最后添加两行
gitpath=`/bin/cygpath C:/Git/cmd`  #这里不是引号,路径是Git下的cmd,斜杠也要用Unix的习惯
export PATH="$PATH:$gitpath"
 
然后,用git用户重新从SSH登录。就可以使用git命令了。
如果git命令提示找不到git-upload-pack,则需要配置C:\ICW\home\git下的.bashrc,在该文件的末尾添加刚才的命令
gitpath=`/bin/cygpath C:/Git/cmd`
export PATH="$PATH:$gitpath"
这样基本上就可以使用了。为什么使用git命令时未加载C:\ICW\etc\profile,具体原因尚不清楚,但是.bashrc会被加载。
启动命令行,在C:\ICW\var目录下依次执行以下命令:
mkdir testgit
cd testgit
git init
touch a b c
git add .
git commit -m "init"
然后,就可以在远程clone这个库了。进入D盘执行
git clone [email protected]:../../vartestgit testgitA
则发现可以进行输出了,路径是相对于git登陆后的根目录C:\ICW\home\git
git clone [email protected]:../../vartestgit testgitB
clone出第二个版本库,分别在这两个库中执行操作。如果此时提交修改,则git并不知道是谁提交的,需要告诉git你是谁,在git用户的根目录C:\ICW\home\git中添加.gitconfig文件(window文件名不支持.开头,创建一个文件,通过ren命名重命名)输入
[user]
       name = git
       email = [email protected]
anotherUser用户的根目录C:\ICW\home\anotherUser输入
[user]
       name = anotherUser
       email = [email protected]
打开命令行,进入到testgitA中设置用户属性:set home=C:\ICW\home\git,对所做的内容进行提交,最后调用git push命令把修改的内容永久的存放到中心版本库中,对anotherUser用户的目录testGitB需要同样的操作:set home=C:\ICW\home\anotherUser,这样提交的内容就被git区分出是谁提交的了。这样基本环境就搭建好了,可以进行进一步的实验了。关于git的命令请参考手册或者到网上搜索。兴奋的git探索之旅可以开始了, 祝 君好运。