在windows下搭建git服务器

来源:互联网 发布:阿里云数据库实时备份 编辑:程序博客网 时间:2024/06/17 01:05

今天花了两小时在windows上搭建git服务器,总的来说还是比较顺利的,现在就和大家来分享一下。

这是主要借鉴的博客:

git服务器搭建:http://blog.csdn.net/ccf0703/article/details/7578276/

相关问题解决:http://www.jianshu.com/p/e625000b03ae


1、所需的软件下载及安装

所需工具下载地址:

msysgit    https://git-for-windows.github.io

copssh    http://www.onlinedown.net/soft/20018.htm 这里一定要下4.x版本的


msysgit的安装:

我把安装中关键的几步截图说明,其余直接点击next 就行。


关于安装路径说明,最好放到每个盘的根目录下,这里我放到了c盘根目录下,注意:路径最好不要有空格,因为空格不好处理,所以这也是没有放到Program Files目录下的原因。

接下来的几步,按照图片所示选择即可




然后等待安装完成即可

copssh的安装直接下一步就行。需要注意的还是路径问题,跟上面一样,最好放在根目录下,我这里放到了d盘。

安装完成。所需环境已经搭好了。


2、对程序做相应配置


一、git相应配置

打开这个图标,进入命令行。在这里,git的命令都可以使用,配置好git的user.name和user.email。git的使用,这里不多说。

接着,在命令行下,使用命令 

ssh-keygen -t rsa 

创建一对公私钥,默认放到当前用户目录下的.ssh文件夹中。用记事本打开后缀为.pub的公钥文件,复制其中的内容,用于接下来的copssh的配置。

二、copssh的配置

从开始菜单中找到安装好的copssh文件夹,打开其中的COPSSH Control Panel。

切换到Users选项卡。若Activated users下为空,则点击旁边的“Add”按钮。

在弹出的窗口中点击“Forward”,进入下一步,接着,在User中选择一个用户后,点击“Forward”,接着把options的第一个选项“Allow password authentication”的勾去掉,因为我们要用公私钥来登陆,不用密码登陆。接着点击“Forward”完成用户添加。添加后应该如下图。



接着,点击右下方的“Keys”按钮,弹出窗口。这里显示的就是ssh服务器中保存的公钥信息了。若有公钥信息,用户就可以使用对应的私钥来远程登陆到ssh服务器进行相应的操作了。第一次我们安装的时候,public key里应该是空的,我们现在要做的,就是把上一步中,我们自己生产的公钥的信息,添加到这里来,步骤如下。

找到COPSSH的安装目录,然后打开其中的home文件夹,可以看到里面有以我们刚加入的user的名字命名的文件夹,进入其中,打开.ssh文件夹。在里面新建一个名字为authorized_keys的文件。注意,这里没有任何后缀。然后用记事本打开,然后将刚才我们配置git时产生的公钥里的全部信息复制拷贝到这个文件里。然后,保存退出。

回到COPSSH Control Panel中,将点击“Keys”产生的窗口关闭后,再打开,会看到其中有了一个公钥信息了,如下图。


到了这里,我们已经可以使用我们的私钥,来登陆这个ssh服务器了。打开“Git Bash”。在命令行里输入

ssh ccf@192.168.1.100

ccf就是在COPSSH中配置的用户名,192.168.1.100是服务器的ip地址。


(1)在服务器本地进行ssh ccf@192.168.1.100连接:如果出现错误,可以把服务器用户文件夹下的.ssh文件夹下的known_hosts文件删除,再试试

(2)使用其他主机连接服务器:

如果有如下这种错误:

Permission denied (publickey,keyboard-interactive).
那就要把其他主机下的ssh公钥放到之前服务器authorized_keys的文件中,注意换行。


登陆成功后如下图。


接下来你会发现,登陆成功以后,可以使用linux的命令,但是git的命令还是不能使用,是因为ssh工具并不知道git的存在。别急,接下来我们解决这个问题。

将Git\libexec\git-core目录下的git.exe , git-receive-pack.exe , git-upload-archive.exe , git-upload-pack.exe复制到ICW\bin目录下

将Git\bin目录下的libiconv-2.dll复制到$ICW\bin目录下

将Git下的share目录整个拷贝到ICW下。

其中,Git是指msysgit的安装目录,同理ICW指COPSSH的安装目录。如果Git目录下没有libexec文件夹,看看Git下有没有mingw64这个文件夹,如果有,上面提到的Git下的libexec、bin、share这三个文件夹其实都是在mingw64文件夹下。


至此,配置完毕,接下来,开始使用。这里一定要重新连接git服务器

到这里如果你可以使用git了,那么恭喜你。然而我就比较惨了,当我完成以上步骤后,使用git命令,新的问题出现了:

/usr/bin/git.exe: error while loading shared libraries: ?: cannot open shared object file: No such file......

(1)在ICW\home\Administrator下找到bashrc文件,打开,在末尾加上:

gitpath='/cygdrive/E/git_server/git_server_place/git/Git/bin'gitcorepath='cygdrive/E/git_server/git_server_place/git/Git/mingw64/libexec/git-core'PATH=${gitpath}:${gitcorepath}:${PATH}
把gitpath的/cygdrive/后面的路径改成你自己的Git安装路径下的bin目录路径;把gitcorepath的cygdrive/后面的路径改成你自己的Git安装路径下的libexec/git-core路径。注意:不能用\代替/。


(2)在ICW\etc\skel下找到bash_profile文件,打开,在末尾加上:
gitpath='cygdrive/E/git_server/git_server_place/git/Git/bin'gitcorepath='cygdrive/E/git_server/git_server_place/git/Git/mingw64/libexec/git-core'export PATH="/bin:$syspath:$gitpath:$gitcorepath:$winpath"
把gitpath的/cygdrive/后面的路径改成你自己的Git安装路径下的bin目录路径;把gitcorepath的cygdrive/后面的路径改成你自己的Git安装路径下的libexec/git-core路径


再次重新连接git远程服务器,发现git命令已经可以使用了


3、git服务器的测试

打开“Git Bash”,使用命令

ssh ccf@192.168.1.100

连接到ssh服务器。这个命令上面有说明。

然后依次使用下列命令

mkdir test.git

cd test.git

git init –bare

新建一个名为test.git的文件,并在其中建立一个纯git仓库。

然后使用命令exit退出ssh服务器


把这个远程仓库克隆到自己的本地

我们在d盘下新建一个test文件夹并从服务器clone一个git仓库。

输入命令:git clone ccf@192.168.1.100:test.git . 

本以为能顺利进行,没想到又报错了

/usr/bin/git-upload-pack.exe: error while loading shared libraries: libssp-0.dll: cannot open shared object file: No such file or directoryfatal: Could not read from remote repository.

可以发现,这个错误是git-upload-pack.exe引发的,在ICW\bin下找到它,双击运行,它会提示某某文件丢失,某某文件丢失,把丢失的文件名都记录下来,进入Git\mingw32\bin这个目录找到丢失的文件,把它放到ICW\bin中。再次clone,总算是可以了。


接着就可以肆意妄为的进行add,commit,push等等操作了