Github "фатально: віддалене походження вже існує"


465

Я намагаюся слідувати підручнику Майкла Хартла «Рейки», але я зіткнувся з помилкою.

Я зареєструвався в 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файл, щоб побачити, чи ще не оголошено походження.
Denys Séguret

3
Я зіткнувся з тією ж проблемою і використав команду "git remote rm origin", а потім скористайтеся командою git remote add URL origin.
Ахзар Назір

@AkhzarNazir, будь ласка, додайте це як відповідь. Це працювало для мене.
Памела Сілла

Відповіді:


894

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
Чому б походження існувало в його новому сховищі? Він повинен вирішити проблему (гарантуючи, наприклад, що походження є правильним псевдонімом github), а не створювати новий псевдонім, про який він повинен нагадати.
Denys Séguret

1
Гаразд, що працювало, але тоді, коли я переходжу до наступного кроку і ввожу git push -u master master origin у термінал, я отримую таку помилку: ПОМИЛКА: Репозиторій не знайдено. фатально: Віддалений кінець повісив трубку несподівано Що це означає?
ппреєр

Що означає git remote -vвихід? Також ви можете спробувати git push origin master?
Агіс

16
git remote rm originне дуже працював. Це призвело до помилки: не вдалося видалити розділ конфігурації 'remote.origin'
Андрій Савіних

20
@zespri: usegit 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 посилається на команду delete, що використовується в * nix. Отже, ця команда говорить git "видалити" дані віддаленого сервера під назвою "origin".
пограбувати

Не потрібно робити це в два етапи, коли ви можете це зробити в 1. Дивіться мою відповідь.
Агіс

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 repos, з якими у мене виникли проблеми, GitHub, BitBucket GitLab тощо.


2
Це працювало для мене. Дякуємо @ eduncan911. Інструкції github вказують зробити "git init" для створення нового сховища в командному рядку. Це створює віддалений вихідний код без URL-адреси за допомогою цього інтерфейсу PS.
mikekidder

Ах да, це ще одна хатча і чому ви повинні це робити. +1 Можливо, ми повинні повідомити про це в POSH Git on github.
eduncan911

Як знайти URL-адресу під час використання gitlab?
Madmenyo

1
@MennoGouw Я думаю, що це питання поза темою; але, як правило, це на приладовій панелі / будинку Repo. Це також в налаштуваннях для проекту.
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

Потім ви зможете відновити свій підручник.


34

Спочатку зробіть:

git remote rm origin

тоді

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

і вуаля! Працювали для мене!


Навіщо видаляти походження? Чи є якийсь спосіб ми можемо додати що-небудь замість походження?
Абхілс

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 Woah, не знав, що колись були мовчазні зміни. Це пояснює.
daOnlyBG

7

Це повідомлення про помилку вказує на те, що у вашому git-каталозі вже є пульт. Якщо вас влаштовує цей пульт, ви можете надіслати свій код. Якщо ні, чи ви не можете просто натиснути:

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

Вуаля!


7

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

originЄ псевдонімом , який вказує на цей URL. Тож замість того, щоб писати всю URL-адресу кожного разу, коли ми хочемо щось перенести до нашого сховища, ми просто використовуємо цей псевдонім і запускаємо:

git push -u origin master

Розповідаємо про посилання на pushнаш код з нашого місцевого відділення майстра до сховища віддаленого походження .

Щоразу, коли ми клонуємо сховище , 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 ти повинен бути

корінь

якщо ні, то використовуйте судо

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

git віддалене видалення походження

для додавання походження:

git remote add origin 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 віддалене перейменування походження старого походження

Брат спасибі, це єдине, що працювало на мене.
Акшат Тамракар

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

2

оновіть походження, якщо воно вже існує за допомогою цієї команди

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

0

Перша перевірка Щоб побачити, скільки псевдонімів у вас є і які вони, ви можете ініціювати цю команду git remote -v

Потім подивіться, в якому сховищі ви знаходитесь, тоді спробуйте git remote set-url --add [Тоді ваше посилання на репозиторій] git push -u master master origin


0

Принаймні на bash, ми можемо змусити повернути значення вихідного коду команди до 0

Ви можете видалити старий пульт та додати його знову

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

0

У випадку, якщо ви хочете зробити через GUI, зробіть наступне:

  1. Переконайтесь, що "приховані файли" відображаються у папці вашого проекту
  2. Перейдіть до каталогу .git
  3. Відредагуйте файл URL у файлі config.txt та збережіть файл!
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.