Mac下搭建Git本地库(续)

The only unchangeable thing is change.

   前面讲了如何搭建一个基于Git协议的Local repository。实现了之前的用户需求,现在用户来了一个新需求:

  “我希望在Windows的机器上也可以使用local repository”

首先分解这个需求:
   1、在Windows下安装Git,或者Git支持工具。
   2、验证之前的上篇提到的所有功能都能在Windows下工作
   3、如果有改动git server的设置,Mac的所有功能也需要重新验证。

实现过程:
   1、在Windows下安装Git,目前比较流行是msysgit,可以从http://code.google.com/p/msysgit/ 下载,安装。

   2、验证Windows环境中的Pull,Push等上篇提到的功能。在这步的实现过程中,碰到一个大麻烦。在windows系统中可以clone,但是push的时候去会被卡住,多番google,发现msysgit对于git协议的支持有个大bug,详细情况http://code.google.com/p/msysgit/issues/detail?id=457 最惨的是大牛们都素手无策,一年多了仍然未fix。不过bug的回复列表中给了一些绕过这个bug的建议,我直接选择了抛弃git协议,切换到SSH协议。

因实现过程中遇到的困难迫使我修改了设计方案,因此我不得不重新分解任务:

1、开启服务器的SSH服务
   Mac下直接System preference –> sharing 下勾选Remote Login, 在该界面下,还可以选择允许访问SSH的用户。
   在Linux下,默认已经安装了SSH需要的套件,只需要执行命令 service sshd start。
   开启SSH服务之后,可以在用户目录 ls –la 发现.ssh目录。如果没有的话,可以通过命令ssh-keygen生成该目录,该目录下有个人私钥id_rsa,公钥id_rsa.pub和用于储存访问过的计算机的公钥的kown_hosts文件,有些还会有authorized_keys文件,这个文件是用来存储已授权的公钥。

2、搭建支持SSH协议的本地库,
   创建本地库的过程和上篇一样,但是SSH协议不需要touch git-daemon-export-ok文件。
mkdir git_repo/test.git
cd git_repo/test.git
git init –bare 


3、测试Mac能够通过SSH协议clone, push, pull 等操作远程数据库
     
git clone lincoln.liu@<local-ip>:git_repo/test.git
  lincoln.liu是我的用户名,local-ip是我的主机名。 git_repo/test.git是第一步创建的git repository的地址。
       执行这条命令会要求输入用户名,如果不想每次都输可以把自己的public key(id_rsa.pub) 加入服务器的authorized_keys(如果没有,就在.ssh目录下创建该文件) 中,
cat id_rsa.pub  >> authorized_keys


    本地工作目录clone完成之后,测试push功能 ,和上篇一样
cd test
touch README
git add .
git commit –m “add README”

git remote add local lincoln.liu@<local-ip>:git_repo/test.git
git push local master

注:此处如果push报错,很大可能是因为user(Lincoln.liu)对repository的目录没有读写权限。可通过如下命令解决
sudo chown –R <user-name>:<user-group>  <repo_directory>


4、测试windows下能通过SSH协议工作,打开GitBash,剩下所有的操作都和Mac一样了。

OK,Mission Completed!!

你可能感兴趣的:(git)