Github «фатально: удаленное происхождение уже существует»

466

Я пытаюсь следовать учебнику Майкла Хартла по Rails, но наткнулся на ошибку.

Я зарегистрировался на Github и выпустил новый ключ SSH и создал новый репозиторий. Но когда я ввожу следующую строку в терминал, я получаю следующую ошибку:

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

Интересно, сталкивался ли кто-нибудь еще с этой проблемой?

ppreyer
источник
Если вы еще создали git-репозиторий, посмотрите на .git/configфайл, чтобы узнать, если источник еще не объявлен.
Денис Сегюре
3
Я столкнулся с той же проблемой и использовал команду «git remote rm origin», затем использовал команду «git remote add origin URL».
Ахзар Назир
@AkhzarNazir, пожалуйста, добавьте это как ответ. Это сработало для меня.
Памела Силла

Ответы:

896

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

Помните, что везде в учебнике вы видите «происхождение», вы должны заменить его на «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) вместо создания нового псевдонима, который он должен будет напомнить.
Денис Сегюре
1
Хорошо, это сработало, но затем, когда я перехожу к следующему шагу и вписываю git push -u origin master в терминал, я получаю следующую ошибку: ERROR: Repository not found. фатальный: удаленный конец неожиданно зависает Что это значит?
ppreyer
Что делает git remote -vвыводы? Кроме того, вы можете попробовать git push origin master?
Agis
16
git remote rm originне совсем работает. Произошла ошибка: не удалось удалить раздел конфигурации 'remote.origin'
Андрей Савиных,
20
@zespri: использованиеgit remote set-url --add origin git@github.com/username/repo.git
eduncan911
342

Короче говоря,

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

Работал !

Ура!

Маниш Шривастава
источник
кто-нибудь может объяснить это? git remote rm origin
Kick Buttowski
1
@KickButtowski rm относится к команде удаления, используемой в * nix. Таким образом, эта команда говорит git «удалить» данные удаленного сервера с именем «origin».
ограбить
Нет необходимости делать это в 2 шага, когда вы можете сделать это в 1. Смотрите мой ответ.
Agis
37

Для тех из вас, кто сталкивается с очень распространенной ошибкой «фатальный: удаленный источник уже существует», или когда вы пытаетесь удалить источник и получаете сообщение «ошибка: не удалось удалить раздел конфигурации remote.origin», вам нужно сделать следующее: установить источник вручную.

POSH ~ Git для Windows PowerShell (и GitHub для Windows) имеет проблему с этим.

Я столкнулся с этим, как и часто, снова, когда настраивал свою осьминогу. Итак, вот как я получил это работает.

Сначала проверьте ваши пульты:

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

Сначала вы заметите, что мой источник не имеет URL. Любая попытка удалить его, переименовать и т. Д. Все терпит неудачу.

Итак, измените URL вручную:

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, с которыми у меня были проблемы, GitHub, BitBucket GitLab и т. Д.

eduncan911
источник
2
Это сработало для меня. Спасибо @ eduncan911. В инструкциях github указано «git init» для создания нового хранилища в командной строке. Это создает удаленный источник без URL-адреса с использованием этого интерфейса PS.
Mikekidder
Ах да, это еще один вопрос, и почему вы должны это сделать. +1 Может быть, мы должны сообщить об этом POSH Git на github.
eduncan911
Как мне найти URL при использовании gitlab?
Madmenyo
1
@MennoGouw Думаю, это не по теме; но, как правило, это на приборной панели / дома Репо. Это также в настройках проекта.
eduncan911
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

После этого вы сможете возобновить учебник.

Марк Семсел
источник
35

Сначала сделайте:

git remote rm origin

тогда

git remote add origin https://github.com/your_user/your_app.git

и вуаля! Работал на меня!

Обед Кастильо
источник
Зачем удалять происхождение? Есть ли способ добавить что-нибудь вместо источника?
Абхилс
28

В особом случае, когда вы создаете новый репозиторий, начиная со старого репозитория, который вы использовали в качестве шаблона (не делайте этого, если это не ваш случай). Полностью удалите файлы 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 Woah, не знал, что когда-то были безмолвные правки. Это объясняет
daOnlyBG
7

Это сообщение об ошибке означает, что у вас уже есть пульт в вашем каталоге git. Если вы довольны этим пультом, вы можете нажать свой код. Если нет или если вы не можете просто нажать:

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

Вуаля!

MrHanachoo
источник
7

Концепция remote- это просто URL вашего удаленного хранилища.

originЯвляется псевдонимом , указывающий на этот 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

Итак вкратце:

  • узнай что у тебя уже есть,
  • удалить или переименовать их,
  • добавьте ваши новые псевдонимы.

Удачного кодирования.

Kobayashi
источник
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

для использования мерзавца вы должны быть

корень

если нет то используйте sudo

для удаления происхождения:

Git Remote удалить происхождение

для добавления происхождения:

git remote добавить источник http: // giturl

Каран
источник
3
  • $ git remote add origin git@gitlab.com:abc/backend/abc.git

    В этой команде источник не является частью команды, это просто имя вашего удаленного хранилища. Вы можете использовать любое имя, которое хотите.

    • Сначала вы можете проверить, что он содержит, используя команду ниже

    $ 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

Форам Сойитра
источник
3

Попробуй это

  • cd существующий_репо
  • git удаленное переименование источника old-origin
Срирай В.Р.
источник
Брат, спасибо, это единственное, что сработало для меня.
Акшат Тамракар
2

сталкивается с той же ошибкой при добавлении репозитория в git hun с помощью git bash на windows

 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
akshay_sushir
источник
2

обновить источник, если он уже существует с помощью этой команды

git remote set-url origin https://github.com/SriramUmapathy/ReduxLearning.git
Sriram
источник
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. Отредактируйте файл url в файле config.txt и сохраните файл!
inspiredMichael
источник