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

Eri*_* S. 5 git ssh cross-platform

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

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

我有几个想法:

  1. 也许freeSSHd行为不正确(如此处所示)所以我可以为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]

    我和这两个都得到了同样的错误.

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

谢谢!

Von*_*onC 2

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

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

您不仅可以在那里复制您的公钥(即在“ authorized_keys”中),还可以引用一个脚本来为您的 ssh 命令执行:

> more authorized_keys
command="path/to/any/script/you/want" ssh-rsa AAAAB3N;...A_long_key..J6U19Jsf/kuO99XIrNE4ePzHw== username@pc_hostname
Run Code Online (Sandbox Code Playgroud)

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

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