当我尝试推送到远程仓库‘origin’时,为什么Git告诉我“没有这样的远程‘origin’”?

228

我对Git非常陌生,最近才创建了一个GitHub账号。

我刚试图提交我的第一个代码库(一个示例项目),但是出现了以下错误:

No such remote 'origin'

我运行了以下命令:

git init
git commit -m "first commit"
git remote add origin https://github.com/VijayNew/NewExample.git
git push -u origin master

当我运行git commit -m "first commit"命令时,我收到了以下信息:

nothing added to commit but untracked files present (use "git add" to track)

于是我试图设置origin,使用以下代码:

git remote set-url origin https://github.com/VijayNew/NewExample.git

但是我遇到了以下错误:

No such remote 'origin'

我做错了什么,应该怎么办?


1
在init和commit之间添加一个“git add .”步骤。 "git remote"(或git remote -v)提供了什么输出? - user745733
1
git remote -v 什么也没有显示。 - Vijay
2
你有加入 'git add' 吗? - Raja Simon
当我尝试推送时,现在出现了这个错误:remote: Repository not found. fatal: repository 'https://github.com/VijayNew/NewExample.git/' not found - Vijay
6
当您开始一个新的存储库时,第一个REMOTE命令应该是git remote add origin git@abc.com:mygit,如果您运行git remote set-url origin git@abc.com:mygit,则会收到错误消息:“没有这样的远程'origin'”。我也遇到了同样的问题,花了几分钟才弄清楚。希望这可以帮助其他人。 - Kemin Zhou
显示剩余9条评论
5个回答

277

两个问题:

1 - 你从未告诉Git开始跟踪任何文件

你写道你运行了

git init
git commit -m "first commit"

在那个阶段,你得到了这个。

nothing added to commit but untracked files present (use "git add" to track).

Git告诉你,你从未命令它开始跟踪任何文件,并且没有任何东西需要拍摄快照。因此,Git不会创建提交。在尝试提交之前,应该告诉Git(例如):
嘿Git,在我的工作目录中,你看到那个闲置的README.md文件吗?你能为我将其放入版本控制中吗?我希望它成为我的第一个提交/快照/修订版本...
为此,您需要使用暂存感兴趣的文件。
git add README.md

在运行之前。
git commit -m "some descriptive message"

2 - 您尚未设置远程代码库

您随后运行了

git remote add origin https://github.com/VijayNew/NewExample.git

完成后,你的本地仓库应该能够与指定URL(https://github.com/VijayNew/NewExample.git)上的远程仓库进行通信......但前提是远程仓库确实存在!不过看起来你一开始在GitHub上并没有创建那个远程仓库:当我尝试访问相应的URL时,我得到了下面这个结果:

enter image description here

在尝试推送到远程仓库之前,你需要确保后者实际上存在。因此,去GitHub上创建所需的远程仓库。然后你才能成功地使用以下命令进行推送:

git push -u origin master

@ Jubobs. 第一个问题是我的错误。现在我这样做。git init git add --all git commit -m "first commit"。现在它正常工作了。2) 实际上,我在20分钟前删除了我的帐户。现在我创建了一个新的帐户。https://github.com/VijayMobileApp/WindowsPhoneExample.git - Vijay
到目前为止,我仍然收到“remote: Repository not found. fatal: repository 'https://github.com/VijayNew/NewExample.git/' not found” 的错误。 - Vijay
@Vijay 你删除了你的旧账号,但是旧账号仍在使用。 - Raja Simon
$ git remote set-url origin https://github.com/VijayMobileApp/WindowsPhoneExamp le.git fatal: No such remote 'origin' - Vijay
2
通过访问URL,我看到您现在在GitHub账户“VijayMobileApp”上创建了一个名为“WindowsPhoneExample”的仓库。现在您需要做的就是运行“git remote add origin https://github.com/VijayMobileApp/WindowsPhoneExample”。然后您就可以使用“git push -u origin master”进行推送了。 - jub0bs
嗨@Jubobs。现在它正在工作。起初我也只是给了相同的URL。那么为什么对我不起作用呢?现在我正在使用你提供的URL。现在它正在工作。无论如何,谢谢Jubobs..!! - Vijay

77

我猜你在提交失败后没有运行这个命令,所以现在直接运行它来创建远程分支:

 git remote add origin https://github.com/VijayNew/NewExample.git

提交失败是因为您需要将想要跟踪的一些文件添加到git add中。


1
这个命令只是让本地仓库“知道”远程仓库的存在,它并不会在 GitHub 服务器上实际创建远程仓库,而我认为这正是 OP 在这里需要做的。 - jub0bs
1
我非常清楚这个命令的作用。根据问题,我猜测用户可能一次性粘贴了所有命令,但提交失败了,所以他实际上从未添加远程。 - Emil Davtyan
1
只是为了明确,我并不是在暗示你不知道 git remote add 是什么 :) 只是你没有考虑到 OP 从未创建过远程仓库的可能性。 - jub0bs
3
我也遇到了同样的问题,而且我已经创建了远程仓库。这个答案是解决办法。 - sdjuan
这正是我需要的,命令行(set-url)建议使用“--add”,但根本不起作用。谢谢。 - Default

36

当我试图将本地创建的仓库与 Github 上的空仓库进行关联时,我遇到了这个问题。最初我尝试使用 git remote set-url,但我必须改为使用 git remote add

git remote add origin https://github.com/VijayNew/NewExample.git

这对我有用 - 有点奇怪,因为我收到了BitBucket自己的“下一步该怎么做”指令中使用set-url命令的指示。 - PandaWood

18

以下步骤适用于我:

初始化

首先,使用 Git 初始化仓库,以便跟踪任何文件更改:

git init

创建别名origin

然后,检查您想要与别名origin关联的远程存储库是否存在,如果不存在,请先在git中创建它。

$ git ls-remote https://github.com/repo-owner/repo-name.git/

如果它存在,将其与远程别名"origin"关联起来。
git remote add origin https://github.com:/repo-owner/repo-name.git

并使用 git remote -v 检查远程 别名“origin”属于哪个URL:

$ git remote -v
origin  https://github.com:/repo-owner/repo-name.git (fetch)
origin  https://github.com:/repo-owner/repo-name.git (push)

验证别名来源

接下来,验证您的别名origin是否已正确地进行了别名化,具体如下:

$ cat ./.git/config
:
[remote "origin"]
        url = https://github.com:/repo-owner/repo-name.git
        fetch = +refs/heads/*:refs/remotes/origin/*
:

一定要看看这个部分[remote "origin"]。你可以考虑使用GitHub Desktop,它适用于Windows和MacOS,可以帮助我自动填充~./git/config文件中缺失的部分,或者你也可以手动添加,虽然不是很好,但它确实有效!

从远程主分支拉取任何内容

$ git pull origin main

这将从您刚刚别名为origin的存储库中拉取任何内容到本地存储库,包括.gitignore,并在此过程中创建分支main

检查主分支

$ git branch
* main

这将向你展示已经创建了main分支,并且你现在位于它上面(由*指示)。

可选项

如果你正在使用多个origin,你可能还想更改origin别名,使其更直观:

git remote rename origin my-super-git-repo

最终

git add .
git status //If you want to check what's going to be committed
git commit -m 'First commit' //-m is for message
git push origin main

你会看到如下一堆行:

列举对象:22, 已完成。
计算对象:100% (22/22), 已完成。
使用多达8个线程进行增量压缩
压缩对象:100% (13/13), 已完成。
写入对象:100% (21/21), 4.29 KiB | 292.00 KiB/s, 已完成。
总共 21 个对象(Delta 2),重复使用 0 个对象(Delta 0),包重用 0 个对象
remote: 解析 Delta:100% (2/2), 已完成。
To https://github.com/repo-owner/repo-name.git

948279c..1f3b0b8 main -> main


0
你遇到的错误信息表明在你的Git仓库中没有名为'origin'的远程仓库。这可能意味着仓库没有正确初始化,或者远程仓库没有被正确添加。
要添加一个名为'origin'且具有你提到的URL的远程仓库,你可以按照以下步骤进行操作:
git remote -v
git remote add origin <url>
git remote -v
git push -u origin main

虽然这段代码可能解决了问题,但是加上一个解释来说明为什么以及如何解决这个问题将会极大地改善你的帖子质量,并有可能获得更多点赞。请记住,你回答问题是为了未来的读者,而不仅仅是当前提问的人。请编辑你的答案,添加解释并指出限制和假设的情况。 - Yunnosch
谢谢你提供那个解释。不过,这并不完全是你的写作风格。你能说明一下作者是谁吗?我记得之前在你的帖子中也遇到过类似的情况,其中的措辞与你在评论中使用的截然不同。 - Yunnosch

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