如何在Windows上设置git存储库,然后在Mac OSX上从中推送/拉取

时间:2010-05-20 05:39:24

标签: git cross-platform ssh

我正在尝试设置基于Windows的Web服务器,但是在Mac OSX上进行开发工作。我在Windows服务器上安装了freeSSHd和msysGit,并在我想要的地方设置了一个存储库。我的Mac上也有git,并在那里设置了一个回购。当我尝试通过SSH克隆,拉出或推送到windows repo时,它给了我一个错误,“致命:协议错误:线路长度错误字符”我在客户端设置遥控器并不重要( Mac OSX)机器 - 我可以将它指向一个不存在的文件夹,它仍然给我这个错误。

我也在一个Linux盒子上试过这个,我坐在那里它完美无缺,所以它不是我的Mac。

我有几个想法:

  1. 也许freeSSHd行为不正确(as suggested here)所以我可以为Windows获得不同的SSH服务器 - 也许是OpenSSH

  2. 也许我正在输入错误地合并Mac和Windows文件路径的代码。我试过了:
    sudo git clone ssh://username@xx.xxx.xxx.xxx/C:/ Users / [my_username] / [remote_repo_name] /.git [destination]

    sudo git clone ssh://username@xx.xxx.xxx.xxx/C:\ Users \ [my_username] \ [remote_repo_name] \ .git [destination]

    我对这两个错误都有同样的错误。

  3. 有人知道出了什么问题吗?更好的是,有没有人设法做我想做的事(通过SSH推送到Windows存储库)?

    谢谢!

2 个答案:

答案 0 :(得分:2)

我没有做过那种设置(我的ssh服务器是Solaris10),但我在尝试设置 gitolite 时发现了大多数ssh错误。

  1. 作为先决条件,gitolite要求ssh user@remote git --version起作用
  2. gitolite使用来自%HOME%/.ssh/authorized_keys文件
  3. 的有趣的ssh配置属性

    您不能只在那里复制公钥(即“authorized_keys”),但您也可以引用一个脚本来执行ssh命令:

    > more authorized_keys
    command="path/to/any/script/you/want" ssh-rsa AAAAB3N;...A_long_key..J6U19Jsf/kuO99XIrNE4ePzHw== username@pc_hostname
    

    意味着您将尝试在远程ssh user@remote dir上执行的任何ssh命令实际上将在远程(PC)计算机上调用该脚本。
    (如果是Perl脚本,则可以调用system(your_command)来实际执行您需要的内容)

    从该脚本中,您可以显示和控制(和调试)任何可能影响您尝试通过ssh执行的命令结果的环境变量。
    请参阅.gitolite/src/gl-auth-command作为您可以通过ssh调用的(Perl)脚本的示例(前提是它在authorized_keys文件中的公钥之前声明)

答案 1 :(得分:0)

只是提出一些令人发指的事情,不使用ssh而是使用文件共享。 Mac可以访问Windows共享,git可以在物理路径上运行(这就像Windows共享一样)。