在 Windows 下搭建 Git 服务器

想在命令行练习 git 命令,但不能对现在工作项目 git 库进行操作啊,如果练习操作出错就不好了。所以,想在自己电脑上搭建一个 git 服务器,这样就方便随意练习了。

初看这个问题不是很难,计划很快就可以完成呢。但直到最后,发现总共花费的有效时间有6个小时之长,零零碎碎还持续了一个星期。结果还存在没解决的问题,怎么实现在客户端连上 git 服务器时需要供登录用户提供私匙。因为工作中的 git 项目,在每次 pull、push 操作时,需要输入密码,那么在 eshell(emacs 中的 shell) 却不会要求输入密码,从而不能执行 pull 等操作,必须要通过界面操作方式来输入密码,使用起来不方便。也许能让自己更方便,是程序员最有成就感的事情吧。但最终还是没能在本地搭建需要提供密码的 git 服务器,有些遗憾。如果有哪位大神知道怎么在 windows 搭建需要提供私匙登录到 git 服务器的方式,请告诉我,谢谢!以下是我参照网上的资料和自己使用时遇到的问题及解决办法,和大家分享一下。

安装 SSH 服务器

我选择的是 CopSSH,大家可以从这里下载:http://download.csdn.net/detail/lvye1221/5618819

使用时,我参照了这篇文章 http://blog.csdn.net/jizhengjieing/article/details/6799201,大体流程如下:

添加用户

在用户管理面板中添加用户,例如:gitserver: jack-green

登录方法在命令行中:ssh gitserver@127.0.0.1,输入密码即可

在添加用户时,遇到了一个很奇怪的问题,刚开始还得到了如下结论: 注意密码不能加入‘-’字符或包含数字,例如“jack-green”、“gituser1是不行的,这样不能登入ssh。得出这样的结论有些仓促,因为重新修改的密码不包含这样的字符,就认为不能包含这样的字符,有些武断了。
其实,是因为不能使用第一次创建用户时设置的密码登录到 SSH,需要重新在用户管理中,重新设置用户的密码,就可以设置"jack-green","gituser1"之类的密码的。

添加 git 命令符号链接

网上有人直接在 git 安装目录下,手动创建连接文件,其实是没有必要的。直接登录到 SSH 中,并在命令行中操作即可:

cd /Bin

ln -s "/cygdrive/d/Program Files/Git/bin/git.exe" git.exe
ln -s "/cygdrive/d/Program Files/Git/libexec/git-core/git-receive-pack.exe" git-receive-pack.exe
ln -s "/cygdrive/d/Program Files/Git/libexec/git-core/git-upload-archive.exe" git-upload-archive.exe
ln -s "/cygdrive/d/Program Files/Git/libexec/git-core/git-upload-pack.exe" git-upload-pack.exe

创建 git 库

操作流程如下:

cd /var/
mkdir project.git
cd project.git
git init

touch a b
git add .

// 如果不配置的话,commit 不能正确执行
git config --global user.name "jack" 
git config --global user.email "jack@gmail.com"

git commit -m "first commit"

完成后,即可 clone 项目啦,在命令提示符下执行,会提示要求输入 SSH 用户 gitserver 的密码:

git clone gitserver@127.0.0.1:../../var/project.git project.git
注意不能采用如下方式,可能是因为权限的问题:

git clone gitserver@127.0.0.1:/var/project.git project.git
提示错误如下:
fatal: '/var/project.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

添加公匙

这没有达到预期目标,只是我尝试的印记。

创建密匙

用的工具是:ssh-keygen,因为我电脑上装了 MinGW 和 Git-Bash,有如下两种情况:

用 which 命令查看 ssh-keygen 命令,msys 中命令路径是:
d:/MinGW/msys/1.0/bin/ssh-keygen.exe

MsysGit 中路径是:
/bin/ssh-keygen

注意应该在 Git-Bash 中执行。

1. 输入文件路径,同时在路径中包含文件名,例如:
/d/SSH/tmp/jack

2. 输入密码,两次
green

还未尝试过的新的方式:ssh-keygen -C "你的email地址"  -t rsa

多用户管理

这篇文章比较完善、简单地介绍了linux下搭建多用户操作的功能:http://blog.csdn.net/jixiuffff/article/details/5968929

为了模拟多个用户的情况,直接在用户管理中添加了 user1 和 user2 两个用户。并用copssh激活这两个用户,现在才明白,激活用户时,输入密码就是为了生成用户的公匙和私匙。信息如下:

user1:gituser1
user2:gituser2

虽然在 windows 系统下,建好了这几个用户,但不像文章中提到的那样,在 gitserve 用户中,添加了 user1 和 user2 的公匙,然后能够在 user1 命令行时,重新登录到 gitserver,但是此时输入的密码依然是 gitserver 的密码,那添加公匙有什么意义呢?

先不研究了,可能 windows 下不太好搭建这样的环境。暂时还是从界面中 pull 最新内容好了。

最后

虽然,添加公匙部分没有搭建好,但是,远程库还是搭建起来,以后就在这这里尽情地练习 git 命令吧。





posted @ 2013-06-20 16:24  lvye1221  阅读(31)  评论(0编辑  收藏  举报