zoukankan      html  css  js  c++  java
  • VMware, Win7, Mac系统之间使用Git版本控制器的解决方案

    前一阵子折腾了一阵子Git,用于在Mac系统和Windows系统之间进行代码同步:使用Git在Mac和Windows系统之间进行同步数据

    不过当时只是权宜之计,能让我从PC上更新Mac的代码和从Mac上更新PC的代码。

    现在新的需求出现了,我们有三种系统,苹果机器上的Mac OS X, Win7宿主机器上VMWare里面的Mac OS X以及Windows 7,代码仓库放在专门的服务器上。经过无数次的尝试,发现无法在VMWare里面的Mac OS X系统里面访问其他的Windows 7共享文件夹(可以ping通其他的Windows 7机器,就是Connect to Server不行,有哪位兄弟知道如何解决的麻烦指点一下),但是VMWare里面的Mac OS X可以和其他的苹果机器上的Mac OS X进行共享。Windows 7上可以访问Mac OS X的共享文件夹,但是push会失败。

    在种种问题下,我决定花时间弄一弄通过ssh访问git的方式:

    首先是服务器的问题,我们的服务器是Windows 7系统,默认没有ssh服务,所以需要单独安装:

    google一番以后,找到两篇文章:

    http://samwong.iteye.com/blog/986115

    http://www.iteye.com/topic/690683

    1. 下载安装Git Extensions.(下载地址:http://code.google.com/p/gitextensions/),我用的版本是2.24,默认安装在C:\Program Files\Git下面,可以改成其他地方(对应的后面用到这个的地方也需要改)
    2. 右键"我的电脑",选择"属性",在左边列表里面选择"高级系统设置",点击"环境变量",在Path里面添加"C:\Program Files\Git\Bin"

    3. 下载安装CopSSH.(下载地址:http://www.itefix.no/i2/copssh),我用的版本是:4.1.0,默认是安装在C:\Program Files\ICW下面,可以改成其他地方(对应的后面用到这个的地方也需要改)
    4. 在服务器上创建一个新的Windows帐户名字叫做git,拥有管理员权限.(用户名可以改成其他的,只要你愿意)
    5. 点击“开始菜单”->"所有程序"->"Copssh"->"01. COPSSH Control Panel"

      点击"Add"开始添加用户


    6. 点击"Forward"进入下一个页面
    7. 选择刚刚创建的git用户(如果你的不是git用户,请选择你的用户名)
         
      然后点击"Forward"会自动跳到激活用户页面


    8. 继续点击"Forward"
    9. 激活确认页面,点击"Apply"


    10. 在"开始"里面输入cmd<回车>,打开命令行窗口,输入如下命令:ssh git@127.0.0.1,然后应该就能看到提示让你输入密码,密码确认成功以后就可以看到下面的画面了
       
    11. 控制面板中选择Windows防火墙,点击左边的"高级设置",在左边列表中选择"入站规则",然后点击右边的"新规则"
       
      选择端口,然后点击"下一步"
    12. 输入端口号22,然后点击下一步

    13. 选择"允许所有连接",点击"下一步"

    14. 根据需要选择你要的访问范围,然后点击"下一步"

    15. 给新规则输入一个名字,然后点击"完成"
       
      这样你就可以从其他机器通过SSH访问这台服务器了
    16. 配置SSH里面的Git
      1. 点击"开始"->"All Programs"->"Copssh"->"02. Start a Unix BASH Shell"
      2. 运行命令: cd /Bin
      3. 输入下面4条命令创建4个符号链接:
        $ ln -s /cygdrive/c/git/bin/git.exe git.exe
        $ ln
        -s /cygdrive/c/git/libexec/git-core/git-receive-pack.exe git-receive-pack.exe
        $ ln
        -s /cygdrive/c/git/libexec/git-core/git-upload-archive.exe git-upload-archive.exe
        $ ln
        -s /cygdrive/c/git/libexec/git-core/git-upload-pack.exe git-upload-pack.exe
      4. 这样你就可以在ssh登陆以后调用git了 (把c/git换成你的git安装所在目录, 比如d:\Program Files\Git,就换成d/Program~1/Git)
    17. 在服务器上创建Git仓库,通过调用命令git --bare init或者通过Git Extensions的GUI界面来初始化一个中央数据仓库,比如D:\Projects\Test
    18. 命令行下面调用命令: mklink /D "C:\Program Files\ICW\home\git\Projects" "D:\Projects"来创建一个目录的软链接(前面一个路径是CopSSH的安装路径下面之前创建的用户的home目录)
    19. 至此,服务器配置完成
    20. 客户端访问服务器时,URL为 git@xxx.xxx.xxx.xxx:~/Projects/Test,其中用户名和ip根据你的情况来定
    21. Clone的时候没发现问题,但是客户端push的时候发现会抱错:
      git: '~/Projects/Test' is not a git command See 'git --help'.
      fatal: The remote end hung up unexpectedly
      找了半天,最后解决方法:在客户端运行下面命令:git config --global remote.origin.receivepack "git receive-pack",或者每次push的时候加上参数 --receive-pack='git receive-pack'  (参考:http://stackoverflow.com/questions/2736862/git-clone-works-remote-push-doesnt-remote-repository-over-copssh
    22. 另外,在Mac系统里面我们使用的是SmartGit客户端,需要修改一下ssh设置,点击"Preferences"->"Git"->"SSH Client",选择"Use SmartGit as SSH client",否则会报告连接错误
  • 相关阅读:
    第2章—装配Bean—通过java代码装配bean
    第2章—装配Bean—自动化装配Bean
    第1章—Spring之旅—Spring模块介绍
    第1章—Spring之旅—容纳你的Bean
    第1章—Spring之旅—简化Spring的java开发
    Spring由于web配置导致的spring配置文件找不到的问题的解决方案
    java中Filter过滤器处理中文乱码的方法
    JAVA的NIO的新特性和小Demo,进一步了解NIO
    Azure linux centos 默认登陆账号是什么?
    Linux 获取文件时间信息 判断文件是否存在
  • 原文地址:https://www.cnblogs.com/hyamw/p/2174956.html
Copyright © 2011-2022 走看看