2

好的,我对 git 等比较陌生。我有一个 Rails 应用程序,我复制了一个新应用程序的基础(我怀疑这是这个问题的根源)。在最初的应用程序上,我对 git 没有任何问题。对于我已经初始化了一个 repo 的新应用程序,所有本地提交都很好,并且 repo 存在于 github 上,但是当我尝试推送时出现错误:

未找到 git-receive-pack:您是否在服务器上运行了 git update-server-info?

到目前为止,我已经检查了 git-receive-pack 是否在 /usr/bin 中,并且我还尝试运行该命令

用户$ git push receive-pack=/usr/bin/git-receive-pack

我还尝试根据这个问题(git-upload-pack: command not found, how to fix this wrong)更改 .git/config 文件以明确引用上传和接收包。我也试过跑步

ssh 用户@主机回显 \$PATH

检查远程非登录路径中的内容,但出现权限错误(权限被拒绝:publickey)。

那么,还有其他建议吗?

更新:我通常不使用实际的 git 应用程序,但记得它在那里,所以试图从它而不是命令行推送。错误是不同的“远程:找不到存储库”。如果我在应用程序中搜索它,它会显示“此存储库在磁盘上的位置已更改”。它会去哪里?

更新 2:根据以下 timoras 的问题,我想我现在(无意中 - 我只是模糊地知道我在做什么)从 https 切换到 ssh。当我尝试推送时,我现在收到一个新错误:

$ git push -u 起源大师

无效命令:'/usr/bin/git-receive-pack'username/appname.git''

您似乎正在使用 ssh 克隆 git:// URL。

确保您的 core.gitProxy 配置选项和

未设置 GIT_PROXY_COMMAND 环境变量。

致命:无法从远程存储库中读取

请确保您具有正确的访问权限并且存储库存在。

请注意,这是一个新错误,而不是原始错误。

如果我运行'$ git config -e',以下是输出:

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false

[remote "origin"]
url = git@github.com:username/appname.git
fetch = +refs/heads/*:refs/remotes/origin/*
uploadpack = /usr/bin/git-upload-pack
    receivepack = /usr/bin/git-receive-pack
[remote "heroku"]
url = git@heroku.com:appname.git
fetch = +refs/heads/*:refs/remotes/heroku/*
4

3 回答 3

1

当我尝试将更改推送到我刚刚克隆并进行了一次更改的存储库时,我收到了这个错误。原来我只是没有对存储库的写访问权。

于 2015-01-23T01:11:58.687 回答
1

好的,所以对于其他在类似问题上苦苦挣扎的菜鸟来说,这最终成为了一个传奇。我最终使用了各种资源,包括友好的 github 帮助台人员来找出以下内容(包括终端命令,供那些像我一样对这一切都不熟悉的人使用):

  1. Xcode 开发者包会自动安装一个版本的 git。此版本安装在 /usr/bin 中。您可以通过以下命令查看位置:$ which git
  2. 我在尝试更新时安装了自己的 git 版本,它会自动转到 /usr/local。两者之间存在版本冲突。由于位置差异,git 下载包中的 uninstall.sh 文件实际上并未卸载以前的版本。
  3. 删除 Xcode 开发人员包完全释放了 c. 从我的驱动器中取出 7GB,并没有引起任何问题。然而,它并没有解决根本问题,甚至没有删除旧版本的 Git——我最终不得不通过手动删除来删除这些文件。
  4. 从 /usr/bin 中删除旧的 Git 版本后,我重新初始化了 repo ( $ git init)。
  5. 然后我通过重新设置git引用$ git remote set-url origin https://github.com/username/repo-name.git
  6. 这使我能够成功推送 ($ git push -u origin master$ git push),但是出现了奇怪的合并冲突,所以我从 github ( $ git pull origin master) 中提取,解决了与 vimdiff 的冲突(本身就是一个主题 - 只需使用 google)然后再次推送。

达达!显然都修好了。Github 人员还建议创建一个新的克隆以用于未来的工作($ git clone https://gitub.com/username/repo-name.git)。

谢谢各位的意见。

于 2013-08-18T00:18:42.437 回答
0

看来您正在通过 http/webdav 使用远程 git。运行/询问你的 git 管理员git update-server-info在 git repo 的服务器上运行

编辑

我认为您添加了错误的 gtihub 网址。

转到您的 github 网站。检查您的 repo url(SSH 克隆 URL)并在本地 git repo 上执行: remote set-url origin <url from gtihub page>

于 2013-08-11T08:34:27.813 回答