【问题标题】:git-upload-pack: command not found on windows but works on osxgit-upload-pack:在 Windows 上找不到命令,但在 osx 上有效
【发布时间】:2018-06-18 03:36:55
【问题描述】:

我正在尝试克隆一个 repo。 (如果重要的话,GitLabs)

命令: git clone user@machine.com:user/project

像冠军一样工作 - 来自 OS-X,但它会在 Windows 上出现以下错误: git-upload-pack:在 Windows 上找不到命令

现在,很明显,我在这里看到消息说我只需要将它添加到远程路径上(显然配置正确,因为我可以从 OS-X 很好地克隆,而这是在新 VM 上开箱即用的 GitLabs 安装。)

我看到消息说我需要将它添加到本地 Windows 机器上的路径中。是的,做到了。我可以从命令提示符或 git bash shell 运行它而不会出现任何问题。 (运行 git-upload-pack 命令)

然后 'git --exec-path' 回来了 C:/Program Files/Git/mingw64/libexec/git-core

里面当然有程序。

显然,程序应该告诉我哪一方失败了,但事实并非如此。在我看来,“上传”必须在 gitlabs 一侧,因为那是上传东西的一侧,对吗?

我也尝试在本地创建 git repo 并尝试将其附加到远程,但它说我没有远程集,并给了我一个执行失败的命令。

git 推送来源 致命:当前分支主控 没有上游分支。推送当前分支并设置远程 作为上游,使用

git push --set-upstream origin master

git push --set-upstream origin master 错误:src refspec master 不匹配任何内容。错误:未能将一些参考推送到 'User@system.com:remoteUser/project.git'

有什么想法吗?


更新:我已将 gitlabs 给出的 ssh 值编辑为:'git@...' 我误认为应该是 user@,通过将其更改回 'git@machine.com:user/project' 我能够正确克隆回购。而且,如果我尝试使用 --upload-pack 命令行参数,它会返回(正如人们希望的那样)“不允许的命令”。

【问题讨论】:

  • 最后一部分,需要配置一个名为origin的远程。查看git remote add 命令。

标签: git gitlab


【解决方案1】:

git fetch-pack 命令在将克隆交付给客户端的服务器上运行。

当您在客户端上运行 git clonegit fetch 时,您可以(但不应该必须)添加参数:

--upload-pack <path>

这会将路径传递到下一层,即在服务器上运行的git fetch-pack。因此,您看到的错误表明,当有人从 OS X 克隆时,运行 Gitlab 服务器的任何机器都会运行 git fetch-pack,后者成功运行 git upload-pack — 可能是因为用户的 $PATH?1 ——而来自 Windows 机器的相同或另一个用户运行 git clone,会导致相同的 Gitlab 服务器运行 git fetch-pack,但无法找到 git upload-pack

根据您在此处所说的内容,我可以诊断此问题。

作为Code-Apprentice said in a comment,如果你创建一个仓库而不使用git clone,你应该使用git remote add来添加一个远程。 (git clone 命令本质上是git init,然后是git remote add,然后是git fetch,以及根据需要在其间添加的其他一些 Git 项目;最后,clone 执行 @987654340 @.)


1这显然取决于服务器上的操作系统和软件。

【讨论】:

  • 我使用相同的用户。我有一个不同的 SSH 密钥,但两个密钥都附加到同一个 gitlab 用户。我不认为 Windows 或 Os-X 机器上的路径对服务器很重要。服务器是 CentOs。如果能找到get-fetch-pack,是不是git-upload-pack在同一个目录下? --upload-pack 路径是一个可怕的 hack (客户端不应该知道,不关心,甚至能够改变它 --upload-pack /tmp/badCode - 这会导致 badCode/git-upload-pack 运行哪个擦除所有 git repos 所在的目录。我假设你必须是管理员才能运行它!!)
  • 确实,客户端类型和路径在服务器上应该无关紧要。 (而且我同意--upload-pack 也很糟糕,我认为它可以作为一种解决方法,以解决有人早期遇到的某些情况,或者用于进行测试的开发人员。)我建议在服务器上添加日志记录(不知何故 - 不清楚 如何使服务器更详细...)。您所做的更新,切换到 git@...,表明您可能在 Mac 上使用了 git@
  • 有可能,我必须确认一下。 (它仍应被列为 repo 的远程 ..)
猜你喜欢
  • 2012-06-23
  • 2012-05-07
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 2015-02-11
  • 2022-07-24
  • 2010-09-18
相关资源
最近更新 更多