Git推送到origin主分支时返回“致命错误:未指定路径。”

27

最近我在GitHub上开设了一个新帐户。 我正在在线跟随Michael Hartl的Rails教程(http://www.railstutorial.org/book#fig:github_first_page)并按照他的说明设置了我的git,这也符合GitHub的设置说明。 无论如何,GitHub上的“下一步”部分是:

  mkdir sample_app
  cd sample_app
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:rosdabos55/sample_app.git
  git push origin master

我一直顺利进行到最后的指令 (git push origin master),然而当我在终端中输入了那行代码时,出现了以下错误信息:

致命错误:未指定路径。请参阅'man git-pull'了解有效的URL语法。

我可能做错了什么?

这是我的 .git/config 文件的内容(由 Jefromi 从 git config -l 的输出中重构,并粘贴在下面的注释中):

[user]
    name = Ross
    email = [REDACTED]
[core]
    editor = gvim -f
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@github.com:
    fetch = +refs/heads/*:refs/remotes/origin/*

1
有人可能想要考虑删除那个电子邮件地址。 - Mike Dinsdale
我遇到了类似的问题,下面的答案并没有解决我的问题。我从GitHub仓库复制并粘贴了git URL,编辑了.git/config文件并确保它是正确的,但是我收到了一个“快进”错误:为了防止您丢失历史记录,非快进更新被拒绝。 在再次推送之前合并远程更改(例如'git pull')。有关详细信息,请参见'git push --help'中的“关于快进”的说明。 - Elisabeth
4个回答

32

在另一个回答的评论中我已经提到了这一点,但实际上这就是答案(而且我已经将评论的适当部分编辑到了问题中)。

无论出于何种原因,远程URL未正确配置,它设置为 "git@github.com:",显然缺少路径,导致出现您看到的精确错误。您需要重新正确地配置它。您可以简单地编辑.git/config,将适当的行更改为包含该路径。或者您可以这样做:

git remote rm origin
git remote add origin 'git@github.com:rosdabos55/sample_app.git'

当您第一次添加远程时,几乎肯定会出现一些小错别字或粗心的错误 - 也许您在其中击中了回车键,也许您在冒号后面键入了一个空格。(由于某种原因,当您在remote add <name> <url>之后提供额外参数时,git似乎不会抛出错误-它只是忽略它。)结果是您实际上没有运行该命令,并且添加了一个具有不完整URL的远程。


对于其他人来说,如果你只是更新基本URL,比如主机名、协议或端口号,请不要忘记在URL末尾添加特定的git仓库细节... - CivFan

2

在您的主目录中编辑git配置

vi ~/.gitconfig

最初的回答

请注释下面的内容

#[remote "origin"]
#   url = git@#######D########################.git
# fetch = +refs/heads/*:refs/remotes/origin/*

保存它。

冲突发生在全局和本地[个别项目级别]的git配置之间。

这对我解决了问题。

最初的回答。


1

在进行 git push origin master 命令之前,你可能需要先执行 git pull origin 命令。


2
如果您正在向存储库推送新分支或推送到新存储库,则无需先进行拉取操作。 - Jamey Hicks

0
你能发布 git remote show的输出吗?
看起来当你添加远程仓库 (git remote add origin git@github.com:rosdabos55/sample_app.git) 时出了些问题。

2
@user306472(OP):git remote show -n origin的输出怎么样? - Chris Johnsen
远程源 URL: git@github.com: HEAD 分支: (未查询) 本地引用已配置为 'git push'(状态未查询): (匹配) 推送到 (匹配) - user306472
1
那个远程URL似乎缺少存储库的路径 - 它只有用户和主机。尝试使用带引号的URL重新添加远程(虽然我从未见过需要引用冒号的shell...)。 - Cascabel
你可以发布.git/config的内容吗?(在编辑问题并将其添加到那里更容易阅读) - zetetic
@user306472: 当我说重新添加时,我的意思是将其删除并添加。当然远程存在。问题在于它配置不正确。您可以在您贴出的配置输出中清楚地看到 - 它说 remote.origin.url = git@github.com:,完全缺少应在此后的路径。显然,您实际上没有使用该完整URL添加远程。(如果您愿意,可以直接编辑.git / config而不是 git remote rm origin; git remote add origin ... - Cascabel
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接