致命错误: 似乎不是一个git仓库

118

为什么我的Git存储库URL正确,但还是出现了这个错误?

fatal: 'git@skarp.beanstalkapp.com/gittest.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

可以在下面的上下文中查看,或者查看截图

jitendra@JITENDRA-PC /c/mySite (master)
$ git push beanstalk master
fatal: 'git@skarp.beanstalkapp.com/gittest.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

jitendra@JITENDRA-PC /c/mySite (master)
$ git clone git://github.com/jquery/jquery.git
Cloning into jquery...
Remote: Counting objects: 19803, done.
Remote: Compressing objects: 100% (5196/5196), done.
Remote: Total 19803 (delta 14204), reused 19549 (delta 14052)
Receiving objects: 100% (19803/19803), 12.80 MiB | 591 KiB/s, done.
Resolving deltas: 100% (14204/14204), done.

jitendra@JITENDRA-PC /c/mySite (master)
$ gitk --all

jitendra@JITENDRA-PC /c/mySite (master)
$ gitk -all

jitendra@JITENDRA-PC /c/mySite (master)
$ git remote add origin git@skarp.beanstalkapp.com/gittest.git

jitendra@JITENDRA-PC /c/mySite (master)
$ git push origin master
fatal: 'git@skarp.beanstalkapp.com/gittest.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

jitendra@JITENDRA-PC /c/mySite (master)

你确定没问题吗?你能从 gettest.git 克隆吗?在上面的例子中,你正在克隆另一个 jQuery。 - Preet Sangha
我想将我的本地文件夹和文件添加到我的Git托管中。 - Jitendra Vyas
29
为了将来的参考,请在问题中包含文本,而不是图像。图像可能会离线,并且即使它们没有离线,它们也会阻止复制和粘贴等操作。 - AD7six
我花了20分钟在这上面,结果发现我只是打错了存储库的名称。lol - don bright
10个回答

102

您对指定存储库的scp样式的语法略有误 - 它必须是:

[user@]host.xz:path/to/repo.git/

正如你在git clone文档中所看到的那样。你应该使用的是以下URL:

git@skarp.beanstalkapp.com:/gittest.git

即你使用的URL中,你漏了:(冒号)

要更新原始URL,你可以执行以下操作:

git remote set-url origin git@skarp.beanstalkapp.com:/gittest.git

3
谢谢。但是,当我添加远程时为什么没有出现任何错误? - Jitendra Vyas
现在我尝试使用 git@skarp.beanstalkapp.com:/gittest.git,但是出现了错误 remote origin already exists - Jitendra Vyas
5
您可以使用命令 git remote rm origin 先移除远程源,然后重新添加它。在第一次推送时,如果您希望该仓库中的 master 分支成为您 master 分支的默认上游,则可以加上 -u 参数(即 git push -u origin master)。 - Mark Longair
移除并重新添加已经起作用了,没有使用 -u。谢谢。我在使用任何版本控制的时候都非常新手。 - Jitendra Vyas
1
你也可以编辑文件“.git/config”,并在[remote "origin"]中更新URL。 - dxvargas

34

当我尝试将现有的存储库存储在我的 Ubunt One 帐户中时,我遇到了类似的问题,我通过以下步骤解决了它:

步骤一:创建远程存储库

$ cd ~/Ubuntu\ One/
$ mkdir <project-name>
$ cd <project-name>
$ mkdir .git
$ cd .git
$ git --bare init

步骤2:添加远程
$ git remote add origin /home/<linux-user-name>/Ubuntu\ One/<project-name>/.git

第三步:将现有的git存储库推送到远程。
$ git push -u origin --all

22

通常情况下,这是因为您在Git存储库中未设置源别名。

尝试

git remote add origin URL_TO_YOUR_REPO

这将在您的 .git/config 文件中为远程克隆/推送/拉取站点URL添加一个别名。此URL可以在您的存储库概述页面上找到。


7
我的本地和远程机器都是OS X。我遇到了麻烦,直到我检查了xCode服务器提供的git repo的文件结构。本质上,该repo中的所有内容都是chmod 777 *,因此要在我的远程帐户上设置一个单独的非xCode repo,我做了以下操作:
远程机器
1. 登录您的帐户 2. 创建所有项目的主目录“mkdir git” 3. chmod 775 git,然后进入它 4. 创建项目文件夹“mkdir project1” 5. chmod 777 project1,然后进入它 6. 运行命令“git init”以创建repo 7. 这会创建一个.git dir。运行命令“chmod 777 .git”,然后进入它 8. 运行命令“chmod 777 *”以使.git中的所有文件都是777 mod 9. 回到myproject1(cd ..) 10. 使用命令“touch test.php”在新repo中设置测试文件 11. 使用命令“git add test.php”将其添加到repo暂存区 12. 运行命令“git commit -m 'new file'”以将文件添加到repo 13. 运行命令“git status”,您应该会收到“working dir clean”的消息 14. 使用“cd ..”回到主目录 15. 在主目录中创建符号链接“ln -s project1 project1.git” 16. 运行命令“pwd”以获得完整路径 17. 在我的情况下,完整路径为“/Users/myname/git/project1.git” 18. 记下完整路径以备后用 19. 退出远程机器
本地机器
1. 在某个地方创建项目文件夹“newproj1”(使用“mkdir newproj1”) 2. 进入它 3. 运行命令“git init” 4. 制作到远程机器的别名 5. 别名命令格式为“git remote add your_alias_here URL” 6. 确保您的URL是正确的。这最初给了我头痛 7. URL = 'ssh://user@www.somemachine.com/Users/myname/git/project1.git' 8. 在执行“git remote add alias URL”之后,执行“git remote -v” 9. 命令应该会响应一个提取和推送行 10. 运行cmd“git pull your_alias master”以从REMOTE repo获取test.php 11. 在第10步中执行命令后,您应该会看到一个不错的消息。 12. 运行命令“git push --set-upstream your_alias master” 13. 在第12步中运行命令后,您应该会看到良好的消息 14. #12中的命令将REMOTE设置为项目主(根)
对我来说,要在本地和远程上使用git repo进行干净的开始,需要先在shell中完成所有初始工作。然后,在上述操作之后,我可以轻松地在IDE中设置LOCAL和REMOTE git repos,并使用IDE GUI执行所有基本的git命令。
在我开始学习时,我遇到了困难,直到我首先从远程开始,然后再进行本地设置,并且在远程上开放了所有权限。此外,确保URL中符号链接的完整路径是成功的关键。
同样,这在OS X、本地和远程机器上都可以正常工作。

非常感谢您!我一直在处理目录权限问题,花了很长时间才找到一篇列出它们的帖子! - Mike
本地机器的第7点也缺少冒号...不是很有帮助 :p - Carlo Wood

6

你很可能将仓库的SSH URL填写错误了。

请确认一下,前往Github上的你的仓库,点击克隆或下载按钮,然后再点击使用SSH链接

ssh link

现在复制你的官方仓库SSH链接。我的链接看起来是这样的 - git@github.com:borenho/que-ay.git

如果你之前没有设置过origin,可以执行命令git remote add origin git@github.com:borenho/que-ay.git

如果你之前已经设置了origin,那么请使用git remote set-url origin git@github.com:borenho/que-ay.git来修改它。

现在使用git push -u origin master来推送。


3

我在一个特性分支上遇到了同样的问题。我尝试了上述方法,但都不起作用。我通过以下操作解决了这个问题。

  • git pull origin feature-branch-name(拉取远程特性分支的最新代码)
  • git push(将本地代码推送到远程仓库)

1

当我使用TFS 2017时,遇到了类似的问题。我无法推送或拉取GIT存储库。最终我重新安装了TFS 2017,并确保我使用不同于22的SSH端口(在我的情况下,我选择了8022)。之后,使用SSH针对TFS进行推送和拉取变得可行。


1
我遇到了类似的问题。 在我的情况下,解决方法是取消设置环境变量HOMEBREW_BREW_GIT_REMOTE。
unset HOMEBREW_BREW_GIT_REMOTE

1

对我来说,这些都没有起作用。问题似乎更加平凡...

我花了一整天的时间弄清楚我的Synology卷的名称不是"Volume1"而是"volume1"。

考虑到URL通常不区分大小写,Windows文件路径也不区分大小写,最后但并非最不重要的是:DSM用户界面中对volume1的引用(例如Hyper Backup)是大写的!(为了让它们看起来漂亮?)。最终,我在SSH中四处探索时发现,当更改目录时,大小写很重要。因此,在指定远程存储库的URL时也是如此。


0

我有一个类似的问题,但现在我知道原因了。

在使用git init之后,我们应该使用git remote add命令添加远程仓库。

git remote add name url

注意单词name,如果我们将其改为origin,那么这个问题就不会发生。

当然,如果我们将其改为py,那么每次拉取和推送内容时使用git pull py branchgit push py branch也是可以的。


1
感谢您分享知识的努力,但这并不完全符合OP的情况。问题非常不同。 - Shahbaz
请注意,此前的答案已经说明要添加缺失的远程URL。 - user456814

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