Git push: “致命错误:'origin'似乎不是一个git仓库 - 致命错误:无法从远程仓库读取”。

188

我知道类似的问题已经被问过了。

但是,我相信我的问题是由于我之前犯的一个错误造成的,因此不同:让我解释一下。

一切都很顺利,我可以:

  • git add .将所有文件从我的本地存储库添加到暂存区。
  • git commit -m "message here"为我的提交添加消息。
  • git push origin master将我的文件上传到GitHub。
  • git push heroku master将我的文件上传到Heroku。

然而,在某个时候,我在本地创建了一个名为add-calendar-model的新分支,以防万一应用程序开发的后续步骤出现问题...

...这正是发生的事情。

然而,尽管尝试了多次,我仍然无法将最初的代码(即在创建新分支之前的代码)从master分支获取到我的本地存储库。

所以,我决定手动从我的GitHub上master分支中删除所有文件并git clone它。

这样,我就把所有的文件都找回来了,但现在,我无法再推送到远程存储库。

每次我尝试运行git push origin add-calendar-modelgit push origin master时,我都会收到以下错误:

fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我对Git和GitHub不是很熟悉,正如你现在所猜测的那样,我必须承认我不知道该如何解决这个问题。

有什么想法吗?


2
我曾经遇到过类似的错误,但我的问题是我在当前文件夹的父目录中初始化了git。如果还有人遇到同样的问题,可以查看git的初始化位置,然后再试一次。 - Himanshu Kriplani
17个回答

327

首先,运行以下命令检查原始来源是否已设置:

git remote -v

这应该向您展示项目的所有推送/获取远程。

如果此命令没有输出,请跳过到最后一个代码块。

验证远程名称/地址

如果此命令返回并显示您已设置远程,请检查远程的名称是否与您在命令中使用的远程名称匹配。

$git remote -v
myOrigin ssh://git@example.com:1234/myRepo.git (fetch)
myOrigin ssh://git@example.com:1234/myRepo.git (push)

# this will fail because `origin` is not set
$git push origin main

# you need to use
$git push myOrigin main

如果想要重命名远程或更改远程的URL,您需要先删除旧的远程,再添加正确的远程。

删除旧远程

$git remote remove myOrigin

添加缺失的远程仓库

然后,您可以使用以下命令添加正确的远程仓库:

$git remote add origin ssh://git@example.com:1234/myRepo.git

# this will now work as expected
$git push origin main

对我来说,在git@example.com:1234/myRepo.git前面不需要加上ssh://就可以工作。 - Carol-Theodor Pelu
我正在阅读这个问题,你能帮忙解决新的代码库推送错误吗? - StaticVariable
我将我的远程分支从upstream重命名为origin,这导致了错误。在使用git remote remove origin完全删除远程引用后,再使用git remote add origin <url>添加它,然后就可以正常工作了。 - Uriahs Victor
这对我有用,稍微调整了一下。git remote -v 显示我的 origin 是 git@bitbucket.org/[repo].git。删除该 origin 后,我将其替换为 https://bitbucket.org/[repo].git,这样就可以工作了。为了澄清,我去掉了 "git@",只是输入了 repo URL 而没有用户,提示它要求所有 push/pull 命令的用户(这正是我需要的)。 - Bad Programmer

33

对我来说有效。

git remote add origin https://github.com/repo.git
git push origin master

将仓库的URL添加到本地工作目录中的源(origin)。


2
当我删除结尾的*.git后,它对我起作用了:git remote add origin https://github.com/user/repo - Joel Wiklund

16

正如Matt Clark上面所说的那样

然而,可能没有设置origin,因此跳过删除步骤,直接尝试添加即可解决问题。

git remote add origin <"clone">

“Clone”指的是进入您的GitHub存储库,并复制“HTTPS克隆URL”,然后将其粘贴到GitBash中。


11

这是我更新master分支的方法

在项目中删除初始代码后,通常会出现此类错误

因此,请先验证实际远程版本,然后删除原始内容添加注释,并将存储库URL复制到项目文件中。

$ git remote -v
$ git remote rm origin
$ git commit -m "your commit"
$ git remote add origin https://github.com/user/repo.git
$ git push -f origin master

1
尝试在回答中添加解释,以回答问题并帮助读者理解。目前,它只是像一些轶事,甚至在一般情况下也不起作用(例如,https://github.com/ 是网站根目录和 git 仓库)。 - Kache

5
如果您使用git clone添加了您的远程存储库,则请按照以下步骤操作: git clone <repo_url> 然后执行以下操作: git init git add * *表示添加所有文件 git commit -m 'your commit' 运行git remote -v来检查是否存在任何分支,如果没有,则不会显示任何内容,然后我们需要添加或获取存储库。首先进行fetch操作。您需要在下一次推送之前运行git pull origin <branch>git pull -r origin <branch>
然后,...
git remote add origin <git url>
 git pull -r origin master
git push -u origin master```

3

确保.git目录下的配置文件正确...检查URL并确保使用了正确的密钥协议...ProjectWorkspace/.git/config

  ~Wrong url for git@bitbucket
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = gitbucket.org:Prezyack/project-one-hello.git
    fetch = +refs/heads/*:refs/remotes/origin/*

 ~Wrong URL for SSH...
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = https://emmap1@bitbucket.org/emmap1/bitbucketspacestation.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

我们正在关注URL... 例如:对于Bitbucket,请期望git@bitbucket.org... 如果是gitbucket.org,请进行必要的更改... 保存 尝试再次推送。

2

对我来说,只要在创建新仓库并完成几个步骤后删除现有的源即可帮助我。但在此之前,请检查您的情况下是否存在源:

git remote -v

然后,检查原始名称(通常默认设置),并将其删除。
git remote remove origin

在将代码库推送到新的源并最终推送您的代码时,请使用常见的github命令:

git remote add origin https://github.com/username/repository.git
git branch -M main

git push -u origin main

2
这两个步骤对我有用!
步骤1:
git remote set-url origin https://github.com/username/example_repo.git

步骤2:
git push --set-upstream -f origin main

第三步:

输入您在Github上的用户名和密码

在第二步中,由于rebase操作,实际上需要使用-f选项,引用自post


1
很可能问题在于您的远程源未设置
git add .
git commit -m "Your commit message"
git remote add origin https://repositoryurlpath.git
git push origin master

额外提示:

检查是否设置了远程源(remote origin)

git remote -v

重置远程仓库的源。
git remote remove origin
git remote add origin https://repositoryurlpath.git

1

从源中拉取更改时会出现类似的错误。 如果您正在尝试使用Intellij菜单选项,那么拉取可能不会直接起作用。

转到终端并键入此命令,这应该可以解决问题: git pull origin master


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