为了解决我遇到的问题:使用git在windows上管理网站,我在windows 2008服务器上安装了Cygwin openssh和git for windows(msysgit)(让我们称之为myserver
)。
我在cygwin路径/var/git/example.git
上有一个裸git repo设置,它在Windows上映射到c:cygwinvargitexample.git
。
我有一个用户git
,他对repo的文件夹具有权限。
我可以使用Putty从XP工作站使用基于密钥的身份验证登录git
到myserver
。我在选美比赛中打开了钥匙。
我能够在Putty中使用cygwin样式的路径,因此例如cd /var/git/example.git
可以让我使用裸repo。
然而,当我使用Git Bash(MingW32)并尝试执行以下操作时,我遇到了一个问题:
git clone ssh://git@myserver/var/git/example.git
我得到的回复是:
Cloning into example...
fatal: '/var/git/example.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
当我尝试时:
git clone ssh://git@myserver:c:/cygwin/var/git/example.git
它起作用,回购被克隆。
Cloning into example...
remote: Counting objects: 384, done.
remote: Compressing objects: 100% (288/288), done.
remote: Total 384 (delta 85), reused 359 (delta 73)
Receiving objects: 100% (384/384), 51.72 MiB | 201 KiB/s, done.
Resolving deltas: 100% (85/85), done.
然而,如果我尝试使用进行推送
cd example
git push
失败:
git: '/cygwin/var/git/example.git' is not a git command. See 'git --help'.
fatal: The remote end hung up unexpectedly
那么,我该如何让它发挥作用,以便推/拉/克隆呢?理想情况下,我希望能够使用Cygwin路径样式,例如git clone ssh://git@myserver/var/git/example.git
。
如果这个问题得到解决,我不知道,但我终于成功地让它发挥了作用,并在另一个线程上分享了我的答案:
https://stackoverflow.com/a/10509588
我最近遇到过类似的问题,cygwin-git无法正常工作。我安装了msysgit。然后,为了让事情正常工作,我需要从msysgit shell中完成所有的git工作。根据我的经验,大多数事情都是在dos外壳下进行的,但推送则不然。我建议重新开始,使用msysgit bash shell克隆一个新的repo,并将该shell用于所有git命令,然后推送可能会起作用。
我也遇到了这个问题,因为我正在运行Putty、WinSCP、TortoiseSVN和TortoiseGIT,它们之间有一个共享的盛会。
我通过将GIT_SSH从Putty\prink.exe更改为TortoiseSVN\bin\TortoisePlink.exe来解决此问题例如
set GIT_SSH=C:Program FilesTortoiseSVNbinTortoisePlink.exe