Як змінити URI (URL) для віддаленого сховища Git?


3891

У мене є репо (походження) на USB-ключі, який я клонував на жорсткому диску (локальний). Я перемістив "походження" до NAS і успішно випробував його клонування звідси.

Мені хотілося б знати, чи зможу я змінити URI "походження" в налаштуваннях "local", тому тепер він буде тягнути з NAS, а не з USB-ключа.

Наразі я бачу два рішення:

  • натисніть все на usb-orign і знову скопіюйте його в NAS (це означає багато роботи через нові зобов’язання щодо походження);

  • додайте новий пульт дистанційного керування до "локального" та видаліть старий (боюся, я зламаю свою історію).


6
Мені довелося це зробити на старій версії git (1.5.6.5), а параметр set-url не існував. Просто видалення небажаного пульта та додавання нового з таким же ім'ям працювало без проблем і підтримувало історію просто чудово.
HotN

у моєму випадку мені потрібно перевірити мій дозвіл, у мене є два приватних сховища git, і цей другий обліковий запис є адміністратором цього нового репо, і перший - мій обліковий запис користувача за замовчуванням, і я повинен надати дозвіл на перше
saber tabatabaee yazdi

Відповіді:


6325

Ти можеш

git remote set-url origin new.git.url/here

(див. git help remote) або ви можете просто відредагувати .git/configта змінити там URL-адреси. Вам не загрожує втрата історії, якщо ви не зробите щось дуже нерозумно (і якщо ви переживаєте, просто зробіть копію репо, оскільки ваше репо - це ваша історія.)


29
Якщо у вас інший користувач оболонки, можливо, ви хочете вказати свого користувача git на початку нової URL-адреси, наприклад:myself@git://new.url.here
sobi3ch

13
Ви також можете встановити майстер вгору по течії гілки для нового місця походження з: git branch -u origin/master. Це дозволить вам просто git pushзамість того, щоб робити це git push origin masterкожен раз.
келорек

32
@kelorek або ви можете просто git push -u origin masterвперше :)
hobbs

26
Мені також довелося git remote set-url --push origin git://...встановити походження ... (push) url.
jpillora

3
Для декількох гілок ви можете одночасно git push -u --allпересувати всі гілки до нової URL-адреси (замість git push -u origin master)
Ben


100

Змініть хост для сервера Git Origin

від: http://pseudofish.com/blog/2010/06/28/change-host-for-a-git-origin-server/

Сподіваємось, це не те, що потрібно робити. У сервера, з яким я працював у кількох проектах git, термін дії доменного імені закінчувався. Це означало пошук способу міграції локальних сховищ для повернення в синхронізацію.

Оновлення: Завдяки @mawolf за вказівку, що існує останній спосіб з останніми версіями git (повідомлення від лютого 2010 р.):

git remote set-url origin ssh://newhost.com/usr/local/gitroot/myproject.git

Детальну інформацію див. На сторінці чоловіка.

Якщо ви використовуєте старішу версію, то спробуйте це:

Як застереження, це працює лише тому, що це один і той же сервер, лише з різними іменами.

Якщо припустити, що нове ім'я хоста є newhost.com, а старе було oldhost.com, зміни досить прості.

Відредагуйте .git/configфайл у своєму робочому каталозі. Ви повинні побачити щось на кшталт:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ssh://oldhost.com/usr/local/gitroot/myproject.git

Перейдіть oldhost.comна newhost.comфайл, збережіть файл і закінчите.

З мого обмеженого тестування ( git pull origin; git push origin; gitx) все здається в порядку. І так, я знаю, що це погана форма возитися з git Internals.


Погана форма? Можливо, Але якщо вам потрібно зробити щось, за що автори не сподівались, що комусь колись доведеться це робити, тоді іноді потрібно возитися з внутрішніми органами. Але ви повинні бути готові прийняти наслідки, якщо ви помилитесь. Backup your local repository _before_ messing with git internals.
Джессі Чісгольм

56
git remote set-url origin git://new.location

(або відкрийте .git/config, знайдіть [remote "origin"]і відредагуйте url =рядок.

Ви можете перевірити його роботу, вивчивши пульти:

git remote -v
# origin  git://new.location (fetch)
# origin  git://new.location (push)

Наступного разу, коли ви натиснете, вам доведеться вказати нову гілку за течією, наприклад:

git push -u origin master

Дивіться також: GitHub: Зміна URL-адреси дистанційного керування


Я не зміг встановити нове джерело, редагуючи .git / config. Він сказав, що сховане в git сховище в URL не є сховищем git. Після того, як я зняв і знову створив походження, все було добре. Хоча я не розглядав віддалений set-ur git як рішення своєї проблеми.
восьминоги граббус

+1 за надання повної відповіді з git push -uкомандою. Можливо, очевидно для інших, не для мене.
testphreak

37

Переключення віддалених URL-адрес

Відкритий термінал.

Перший крок: - Змініть поточний робочий каталог на свій локальний проект.

Другий крок: - Перелічіть наявні пульти, щоб отримати ім'я пульта, який ви хочете змінити.

git remote -v

origin  https://github.com/USERNAME/REPOSITORY.git (fetch)

origin  https://github.com/USERNAME/REPOSITORY.git (push)

Змініть URL-адресу вашого віддаленого з HTTPS на SSH за допомогою команди git remote set-url.

3-й крок: - git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

Четвертий крок: - Тепер переконайтеся, що віддалений URL змінився.

git remote -v Підтвердьте нову віддалену URL-адресу

origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
origin  git@github.com:USERNAME/REPOSITORY.git (push)

Чи потрібно видалити старе джерело, перш ніж додати нове походження?
Санки

Я нічого не видалив із проекту. Я просто виконую вищезазначені кроки, і це спрацювало
VIKAS KOHLI

27
  1. видалити походження за допомогою команди на gitbash git віддаленого походження rm
  2. А тепер додайте нове джерело, використовуючи віддалене додавання джерела gitbash git (Скопіюйте URL-адресу HTTP з вашого сховища проекту у бітове відро)

Це дійсно корисна відповідь, тому що без git remote rm origingit пам'ятає подробиці про старе походження.
мато

Вищезгадане git remote rm originвирішує проблему з кількома видаленнями: проблема, де мені не вдалося встановити віддалений URL. remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
bitsand


18

Напишіть команду нижче з терміналу репо:

git remote set-url origin git@github.com:<username>/<repo>.git

Перейдіть за цим посиланням, щоб отримати докладніші відомості про зміну URL-адреси на дистанційному.


1
це допомогло. Посилання було корисним
ANP

16

якщо ви клонували ваш локальний, автоматично складається,

віддалену URL-адресу, де вона клонується.

ви можете перевірити це за допомогою git remote -v

якщо ви хочете внести зміни,

git remote set-url origin https://github.io/my_repo.git

тут,

походження - ваша філія

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

git remote remove url
and 
git remote add origin url

для вас ...


У мене було додано кілька віддалених програм, тому git remote rm originдля видалення всіх пов'язаних URL-адрес потрібна команда. Тоді команда add працювала.
bitsand

14

Щоб перевірити віддалене з'єднання git:

git remote -v

Тепер встановіть локальний сховище на віддалений git:

git remote set-url origin https://NewRepoLink.git

Тепер, щоб зробити його вище або потік використовувати наступний код:

git push --set-upstream origin master -f


1
Я штовхав, і все ж github не показав моєї нової гілки. Це останнє --set-upstreamзмусило його працювати.
OoDeLally

11

У вас є маса способів зробити це:

Консоль

git remote set-url origin [Here new url] 

Просто переконайтесь, що ви відкрили його в місці, де знаходиться сховище.

Налаштування

Він розміщується в .git / config (така ж папка, що і сховище)

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = [Here new url]  <------------------------------------
...

TortoiseGit

Крок 1 - відкрийте налаштування

Крок 2 - змінення URL-адреси

Потім просто відредагуйте URL-адресу.

SourceTree

  1. Натисніть кнопку "Налаштування" на панелі інструментів, щоб відкрити вікно "Налаштування сховища".

  2. Клацніть "Додати", щоб додати віддалений шлях до сховища. Відкриється вікно "Віддалені деталі".

  3. Введіть назву віддаленого шляху.

  4. Введіть URL / шлях для віддаленого сховища

  5. Введіть ім'я користувача для сервісу хостингу для віддаленого сховища.

  6. Натисніть "ОК", щоб додати віддалений шлях.

  7. Назад у вікні налаштувань сховища натисніть «ОК». Новий віддалений шлях зараз слід додати до сховища.

  8. Якщо вам потрібно відредагувати вже доданий віддалений шлях, просто натисніть кнопку "Редагувати". Ви повинні бути спрямовані до вікна "Віддалені відомості", де ви можете редагувати дані (URL / шлях / тип хоста) віддаленого шляху.

  9. Щоб видалити шлях до віддаленого сховища, натисніть кнопку "Видалити"

введіть тут опис зображення

введіть тут опис зображення

реф. Підтримка


11

Змініть URI віддаленого git на, git@github.comа неhttps://github.com

git remote set-url origin git@github.com:<username>/<repo>.git

Приклад:

git remote set-url origin git@github.com:Chetabahana/my_repo_name.git

Перевага полягає в тому, що ви можете робити git pushавтоматично, коли використовуєте ssh-агент :

#!/bin/bash

# Check ssh connection
ssh-add -l &>/dev/null
[[ "$?" == 2 ]] && eval `ssh-agent`
ssh-add -l &>/dev/null
[[ "$?" == 1 ]] && expect $HOME/.ssh/agent

# Send git commands to push
git add . && git commit -m "your commit" && git push -u origin master

Покладіть файл сценарію, $HOME/.ssh/agentщоб він запускався, ssh-addвикористовуючи очікування, як показано нижче:

#!/usr/bin/expect -f
set HOME $env(HOME)
spawn ssh-add $HOME/.ssh/id_rsa
expect "Enter passphrase for $HOME/.ssh/id_rsa:"
send "<my_passphrase>\n";
expect "Identity added: $HOME/.ssh/id_rsa ($HOME/.ssh/id_rsa)"
interact

10

У поле Git Bash введіть команду:

git remote set-url origin https://NewRepoLink.git

Введіть облікові дані

Зроблено



9
$ git remote rm origin
$ git remote add origin git@github.com:aplikacjainfo/proj1.git
$ git config master.remote origin
$ git config master.merge refs/heads/master

8
Коли ви додаєте відповідь на десятирічне запитання з двадцятьма іншими відповідями, дуже важливо включити пояснення своєї відповіді та вказати, який новий аспект питання стосується вашої відповіді. З відповідями, що представляють собою серію команд, корисно пояснити, що кожен робить, і як скасувати ефекти кожної з них, якщо це можливо. Скасування важливе у випадку, якщо хтось зможе виконати перші кілька кроків, але потім на наступному кроці виявиться помилка.
Джейсон Аллер

@JasonAller Я думаю, що це досить зрозуміло, хоча це найкраща відповідь, на сьогоднішній день, інші - це жарт.
Олівер Діксон

7

Якщо ви використовуєте TortoiseGit, виконайте наступні кроки:

  1. Перейдіть у свою локальну папку оформлення замовлення та клацніть правою кнопкою миші, щоб перейти TortoiseGit -> Settings
  2. На лівій панелі виберіть Git -> Remote
  3. На правій панелі виберіть origin
  4. Тепер змініть значення URLтекстового поля на те, де колись є ваше нове віддалене сховище

Ваша філія та всі ваші місцеві послуги залишатимуться недоторканими, і ви можете продовжувати працювати, як раніше.


6

введіть тут опис зображення

Вирішення проблем :

Ці помилки можуть виникнути при спробі змінити пульт. Немає такого віддаленого "[ім'я]"

Ця помилка означає, що пульт дистанційного керування, який ви намагалися змінити, не існує:

git remote set-url sofake https://github.com/octocat/Spoon-Knife fatal: Немає такого віддаленого 'sofake'

Перевірте, чи правильно ви ввели ім’я дистанційного керування.

Довідка: https://help.github.com/articles/changing-a-remote-s-url/


3

Щоб змінити віддалений вихідний потік: git remote set-url origin <url>


Щоб додати більше вихідних потоків: git remote add newplace <url>

Таким чином, ви можете вибрати, де працювати git push origin <branch>абоgit push newplace <branch>


1
Я не міг знайти інших згадок про роботу в декількох
потоках

2

Ви можете змінити URL, відредагувавши конфігураційний файл. Перейдіть до кореня проекту:

nano .git/config

Потім відредагуйте поле URL та встановіть нову URL-адресу. Збережіть зміни. Ви можете перевірити зміни за допомогою команди.

git remote -v 

1

Для тих, хто хоче внести цю зміну з Visual Studio 2019

Відкрити Провідник команди (Ctrl + M)

Головна -> Налаштування

Git -> Налаштування репозиторію

Віддалені -> Редагувати

введіть тут опис зображення


1

Якщо ваш сховище приватне, тоді

  1. Відкрийте Панель управління у меню "Пуск"
  2. Виберіть Облікові записи користувачів
  3. У меню ліворуч виберіть "Керувати своїми обліковими даними"
  4. Видаліть усі облікові дані, пов’язані з Git або GitHub

Довідково


1

перевірити свою привілей

у моєму випадку мені потрібно перевірити своє ім’я користувача

У мене є два-три сховища з окремими обліковими даними.

Проблема - це мій дозвіл. У мене є два приватних сервера git і сховища

цей другий обліковий запис є адміністратором цього нового репо, і перший - мій обліковий запис користувача за замовчуванням, і я повинен надати дозвіл першому

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.