簡體   English   中英

如何通過Windows上的ssh停止git來解決錯誤的路徑?

[英]How to stop git via ssh on windows from resolving the wrong path?

我有一個帶有ssh服務器設置的Windows 2003機器。 我在本地和服務器上安裝了msysgit(git版本1.6.2)。

服務器具有以下我的存儲庫的絕對路徑:

e:\vc\git\myrepo.git

當用戶登錄時,他/她將被放入以下工作目錄:

e:\vc\git\

在我的開發機器上運行以下cmd時:

git clone ssh://myuser@myip/myrepo.git testrepo

我收到以下錯誤:

fatal: ''/myrepo.git'' does not appear to be a git repository

根據我的ssh日志,似乎git正在服務器上執行此cmd:

'cmd.exe /c git-upload-pack '/myrepo.git''

在本地(在服務器上)執行該命令失敗的原因相同。 我認為這個問題與git前綴為'/'的路徑有關。 我怎么告訴git不要這樣做? 這應該有用嗎?

注意:git-upload-pack正在運行,因為我在路徑中添加了\\ gitinstallpath \\ libexec \\ git-core。 顯然這是一個錯誤,將來會修復,這是我的工作。

我通過將我的ssh服務器從winssh切換到openssh(通過cygwin層)解決了這個問題。 我能夠使用winsshd連接正常(如上所述),但是winsshd沒有正確處理前綴為“/”的路徑。 我可能會讓winsshd工作,但切換到cygwin和openssh的速度更快。

如果您處於類似情況,這里有一篇很好的博客文章可以啟動設置:

你試過以下嗎?

git clone ssh://myuser@myip/myrepo testrepo

請注意從SSH路徑末尾刪除“.git”。 如果遠程目錄名稱包含末尾,則最后只需要該后綴。

此外,您是否嘗試過任何其他SSH URL格式? 要使用相對路徑,您可以嘗試:

git clone ssh://myuser@myip/~/myrepo testrepo

有關其他URL格式的詳細信息,請參閱git clone手冊頁

如果有人仍然對解決方法感興趣:

問題是 - cmd.exe不理解單引號參數。 所以我們改用sh。

用line創建文件gup.sh

git-upload-pack.exe $*

和grp.sh一起

git-receive-pack.exe $*

在服務器上!

然后運行:

git clone -u 'sh gup.sh' ssh://myuser@myip/e/vc/git/myrepo.git testrepo  
    git config remote.origin.uploadpack 'sh gup.sh'  
    git config remote.origin.receivepack 'sh grp.sh'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM