Github:“致命:远程起源已经存在”


465

我正在尝试遵循Michael Hartl的Rails教程但是遇到了一个错误。

我在Github上注册并发布了一个新的SSH密钥,并创建了一个新的存储库。但是,当我在终端输入下一行时,出现以下错误:

Parkers-MacBook-Pro:.ssh ppreyer$ git remote add origin git@github.com:ppreyer/first_app.git
fatal: remote origin already exists.

只是想知道是否有人遇到过这个问题?


如果尚未创建git存储库,请查看该.git/config文件以查看是否尚未声明origin。
DenysSéguret2012年

3
我遇到了同样的问题,并使用命令“ git remote rm origin”,然后使用命令git remote add origin URL。
Akhzar Nazir

@AkhzarNazir,请添加为答案。它为我工作。
Pamela Sillah

Answers:


893

TL; DR,您应该只更新现有的遥控器:

$ git remote set-url origin git@github.com:ppreyer/first_app.git

长版:

如错误消息所示,已经有一个配置了相同名称的遥控器。因此,您可以使用其他名称添加新的遥控器,或者在不需要时更新现有的遥控器:

要添加一个新的遥控器(例如,github而不是origin(显然已经存在于系统中)),请执行以下操作:

$ git remote add github git@github.com:ppreyer/first_app.git

不过请记住,在教程中到处都会看到“ origin”,应将其替换为“ github”。例如$ git push origin master现在应该是$ git push github master

但是,如果要查看origin已经存在的内容,可以执行$ git remote -v。如果您认为此处存在某些错误,可以这样更新:

$ git remote set-url origin git@github.com:ppreyer/first_app.git

5
为什么起源会存在于他的新资料库中?他应该解决该问题(例如,确保origin是github的正确别名),而不是创建他必须提醒的新别名。
DenysSéguret2012年

1
确定行得通,但是当我进入下一步并将git push -u origin master输入终端时,出现以下错误:错误:未找到存储库。致命:远端意外挂断是什么意思?
ppreyer 2012年

什么git remote -v产出?另外,您可以尝试git push origin master吗?
阿吉斯2012年

16
git remote rm origin不太正常。它产生了错误:无法删除配置节“ remote.origin”
Andrew Savinykh

20
@zespri:使用git remote set-url --add origin git@github.com/username/repo.git
eduncan911'4

342

简而言之,

git remote rm origin
git remote add origin git@github.com:username/myapp.git

工作了!

干杯!


谁能解释一下?git remote rm源
Kick Buttowski

1
@KickButtowski rm是* nix中使用的remove命令的参考。因此,此命令告诉git“删除”名为“ origin”的远程服务器详细信息。

当您可以在1中完成此操作时,无需分两个步骤进行操作。请参阅我的回答。
艾吉斯(Agis)

37

对于遇到普遍错误“致命:远程源已存在。”的人,或者尝试删除源并收到“错误:无法删除配置节remote.origin”的人,您需要做的是手动设置原点。

Windows的Windows PowerShell的POSH〜Git(Windows的应用程序的GitHub)存在此问题。

设置我的octopress时,就像我经常这样做一样,我也遇到了这种情况。所以,这就是我的工作方式。

首先,检查您的遥控器:

C:\gd\code\octopress [source +2 ~3 -0 !]> git remote -v
octopress       https://github.com/imathis/octopress.git (fetch)
octopress       https://github.com/imathis/octopress.git (push)
origin

您首先会注意到我的来源没有网址。任何尝试删除它,重命名它等的尝试都将失败。

因此,请手动更改网址:

git remote set-url --add origin https://github.com/eduncan911/eduncan911.github.io.git

然后,您可以通过git remote -v再次运行来确认它是否有效:

C:\gd\code\octopress [source +2 ~3 -0 !]> git remote -v
octopress       https://github.com/imathis/octopress.git (fetch)
octopress       https://github.com/imathis/octopress.git (push)
origin  https://github.com/eduncan911/eduncan911.github.io.git (fetch)
origin  https://github.com/eduncan911/eduncan911.github.io.git (push)

修复了数十个我遇到过的git repos的问题,例如GitHub,BitBucket GitLab等。


2
这对我有用。谢谢@ eduncan911。github指令指出要执行“ git init”以在命令行上创建新的存储库。这将使用该PS界面创建一个没有URL的原始远程服务器。
mikekidder 2014年

嗯,那是另一个陷阱,为什么您必须这样做。+1也许我们应该在github上将此报告给POSH Git。
eduncan911

使用gitlab时如何找到网址?
Madmenyo 2014年

1
@MennoGouw我认为这是一个题外话的问题;但是,通常它位于Repo的仪表板/主页上。它也位于项目的设置中。
eduncan911 2014年

36

您可以查看配置为通过哪些远程存储库连接到的远程存储库

git remote -v

这将返回以下格式的列表:

origin  git@github.com:github/git-reference.git (fetch)
origin  git@github.com:github/git-reference.git (push)

这可以帮助您弄清楚原始“来源”所指的是什么。

如果你想保持你与-v看到远程连接,但仍然要遵循Rails的教程,而无需记住你的教程的回购“的github”(或其它名称),你可以为你的其他与存储库命令:

git remote rename [current name] [new name]

如:

git remote rename origin oldrepo

然后,您应该能够继续学习本教程。



27

在特殊情况下,您将从用作模板的旧存储库开始创建新存储库(如果不是这种情况,请不要这样做)。完全清除旧存储库的git文件,以便您可以开始一个新的:

rm -rf .git

然后像往常一样重新启动一个新的git仓库:

git init
git add whatever.wvr ("git add --all" if you want to add all files)
git commit -m "first commit"
git remote add origin git@github.com:ppreyer/first_app.git
git push -u origin master

13

如果需要检查与本地存储库连接的远程存储库,则有一个cmd:

git remote -v

现在,如果您要删除远程仓库(例如,原始仓库),则可以执行以下操作:

git remote rm origin

这看起来更像是评论而不是答案。有了更多代表,您就可以发表评论
弥敦道·塔吉

@NathanTuggy不,这是一个完整的答案,据我拙见,它比该主题上最流行的答案更直接。
daOnlyBG

@daOnlyBG:我不确定答案是什么样子,因为那是在宽限期内锁定注释之前的(因此可能已对其进行了静默编辑)。但是,我同意,现在已经相当完整了。
内森·塔吉

@NathanTuggy哇,不知道曾经有过无声的编辑。这就解释了。
daOnlyBG

7

该错误消息表明您在git目录中已经有一个远程目录。如果您对该遥控器感到满意,则可以推送代码。如果不是,或者您不能只推:

git remote remove origin
git remote add origin git@github.com:ppreyer/first_app.git

瞧!


7

概念 remote只是您的远程存储库的URL。

origin是一个别名指向该URL。因此,我们不需要每次都将整个URL推送到存储库中时写入整个URL,而是使用此别名并运行:

git push -u origin master

告诉git push本地master分支远程存储库的代码

每当我们克隆存储库时git默认都会为我们创建此别名。此外,无论何时我们创建新的存储库,我们就创建它自己。

无论是哪种情况,我们都可以运行以下命令将其更改为所需的名称:

git remote rename [current-name] [new-name]

由于更改存储在git应用程序的客户端(在我们的计算机上)上,因此更改不会影响开发过程中的任何内容,也不会影响我们的远程存储库。请记住,这只是指向地址名称

通过重命名别名,唯一改变的地方是,每次将内容推送到存储库时,我们都必须声明这个新名称

git push -u my-remote-alias master

显然,一个名称不能指向两个不同的地址。这就是为什么您收到此错误消息的原因。origin您的本地计算机上已经有一个别名。要查看您有多少个别名以及它们是什么,可以启动以下命令:

git remote -v

这将显示您拥有的所有别名以及相应的URL。

如果您想运行以下命令,也可以删除它们:

git remote rm my-remote-alias

简而言之:

  • 找出你已经有什么,
  • 删除或重命名它们,
  • 添加新的别名。

快乐的编码。


5

如果您已经为另一个存储添加了项目,例如您上传到github,然后又上传到bitbucket,那么它将显示这种类型的错误。

如何清除错误:删除项目中的git-hub文件,然后重复以下步骤...

git init       
git remote add origin git@bitbucket.org:Yourname/firstdemotry.git  
git add -A  
git commit -m 'Message'  
git push -u origin master  

5

如果您在未初始化git的目录中运行命令,也会发生这种情况。如果是这种情况,请先运行:

git init

4

使用git你必须

如果没有,那么使用sudo

去除原产地:

git remote remove origin

用于增加原产地:

git remote add origin http:// giturl


3
  • $ git remote add origin git@gitlab.com:abc/backend/abc.git

    在此命令中,origin不是命令的一部分,它只是远程存储库的名称。您可以使用任何想要的名称。

    • 首先,您可以使用以下命令检查其中包含的内容

    $ git remote -v

    这样会给你结果 origin git@gitlab.com:abc/backend/abc.git (fetch) origin git@gitlab.com:abc/backend/abc.git (push) origin1 git@gitlab.com:abc/backend/abc.git (fetch) origin1 git@gitlab.com:abc/backend/abc.git (push)

    如果它包含您的远程存储库路径,则可以直接推送到该路径,而无需再次添加来源

    • 如果不包含您的远程存储库路径

    然后,您可以添加具有不同名称的新来源,并使用它来像 $ git remote add origin101 git@gitlab.com:abc/backend/abc.git

    或者您可以重命名现有的来源名称,添加您的来源

    git remote rename origin destination

    再次在命令下触发

    $ git remote -v

    destination git@gitlab.com:abc/backend/abc.git (fetch) destination git@gitlab.com:abc/backend/abc.git (push)

    它将更改您现有的存储库名称,以便您可以使用该原始名称

    或者您可以删除现有的原点并添加原点

    git remote rm destination



2

在Windows上使用git bash将存储库添加到git hun时遇到相同的错误

 git remote add origin https://github.com/axaysushir/netflix_page_clone.git

致命:远程来源已经存在。

fatal: remote origin already exists.

 ! [rejected]        master -> master (fetch first)

错误:无法将一些引用推送到' https://github.com/axaysushir/meditation_app_using_js.git '

通过以下命令更新存储库

$ git remote set-url origin https://github.com/axaysushir/netflix_page_clone.git

然后使用git remote add github添加仓库,而不是git remote add origin

$ git remote add github https://github.com/axaysushir/netflix_page_clone.git

然后编写以下命令而不是git push origin master,这会将您的存储库上传到github

$ git push github master

2

使用此命令更新原点(如果已存在)

git remote set-url origin https://github.com/SriramUmapathy/ReduxLearning.git

0

首先检查要查看您有多少个别名,它们是什么,可以启动此命令git remote -v

然后查看您在哪个存储库中,然后尝试git remote set-url --add [然后是您的存储库链接] git push -u origin master


0

至少在bash上,我们可以强制命令的退出代码的返回值为0

您可以删除旧的遥控器,然后重新添加

git remote remove $1 || true
git remote add $1 $2

0

如果您想通过GUI执行以下操作:

  1. 确保“隐藏文件”在您的项目文件夹中可见
  2. 转到.git目录
  3. 编辑config.txt文件中的url文件并保存!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.