Как изменить URI (URL) для удаленного хранилища Git?


3900

У меня есть репозиторий (источник) на USB-ключе, который я клонировал на своем жестком диске (локальном). Я переместил «origin» на NAS и успешно протестировал его клонирование.

Хотелось бы узнать, смогу ли я изменить URI «origin» в настройках «local», чтобы он теперь вытягивался с NAS, а не с USB-ключа.

На данный момент я вижу два решения:

  • перенесите все на usb-orign и снова скопируйте его на NAS (подразумевает много работы из-за новых коммитов в nas-origin);

  • добавьте новый пульт в "local" и удалите старый (боюсь, я сломаю свою историю).


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

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

Ответы:


6340

Вы можете

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каждый раз.
kelorek

32
@kelorek или вы можете только git push -u origin masterв первый раз :)
Хоббс

26
Я также должен был для git remote set-url --push origin git://...того, чтобы установить источник ... (нажмите) URL.
jpillora

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

902
git remote -v
# View existing remotes
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

git remote set-url origin https://github.com/user/repo2.git
# Change the 'origin' remote's URL

git remote -v
# Verify new remote URL
# origin  https://github.com/user/repo2.git (fetch)
# origin  https://github.com/user/repo2.git (push)

Изменение URL пульта


101

Изменить хост для сервера 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

Смотрите man-страницу для подробностей.

Если вы используете старую версию, попробуйте это:

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

Предполагая, что новое имя хоста 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.


Плохой тон? Может быть. Но если вам нужно сделать что-то, чего авторы не ожидали, что кто-то когда-либо должен будет это сделать, то иногда требуется возиться с внутренностями. Но вы должны быть готовы принять последствия, если вы ошибаетесь. 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)

В следующий раз, когда вы нажмете, вам нужно будет указать новую ветку upstream, например:

git push -u origin master

Смотрите также: GitHub: изменение URL пульта


Я не мог установить новое происхождение путем редактирования .git / config. В нем говорится, что git-репозиторий, указанный в URL, не является git-репозиторием. После того как я удалил и заново создал источник, все было хорошо. Я не рассматривал git remote set-url как решение моей проблемы.
осьминога

+1 за полный ответ с помощью git push -uкоманды. Может быть, очевидно для других, не для меня.
testphreak

37

Переключение удаленных URL

Откройте Терминал.

I шаг: - Измените текущий рабочий каталог на ваш локальный проект.

2-й шаг: - Перечислите существующие пульты, чтобы получить имя пульта, который вы хотите изменить.

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

4-й шаг: - Теперь убедитесь, что удаленный URL-адрес изменился.

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

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

Нужно ли удалять старое происхождение, прежде чем добавить новое происхождение?
Санки

Я ничего не удалил из проекта. Я просто делаю вышеупомянутые шаги, и это сработало
ВИКАС КОЛИ

27
  1. удалить источник используя команду на gitbash git remote rm origin
  2. А теперь добавьте новый Origin с помощью gitbash git remote add origin (Скопируйте HTTP URL из вашего репозитория проекта в битовую корзину).

Это действительно полезный ответ, потому что без git remote rm originмерзавца запоминает детали о старом происхождении.
мато

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


19

Напишите приведенную ниже команду с вашего терминала репо:

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.
бит

14

Чтобы проверить удаленное подключение git:

git remote -v

Теперь установите локальный репозиторий на удаленный git:

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

Теперь, чтобы сделать это upstream или push, используйте следующий код:

git push --set-upstream origin master -f


1
Я давил, и все же github не показывал мою новую ветку. Это последнее --set-upstreamзаставило это работать.
OoDeLally

12

У вас есть много способов сделать это:

Приставка

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

Измените удаленный GRI URI 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-agent :

#!/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 неустранимый: такого удаленного «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

Откройте Team Explorer (Ctrl + M)

Главная страница -> Настройки

Git -> Настройки репозитория

Remotes -> Редактировать

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


1

Если ваш репозиторий закрыт

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

Ссылка


1

проверь свою привилегию

в моем случае мне нужно проверить мое имя пользователя

У меня есть два или три хранилища с отдельными учетными данными.

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

эта вторая учетная запись является администратором этого нового репо, а первая - моя учетная запись пользователя по умолчанию, и я должен дать разрешение первой


0

Удаление пульта

Используйте команду git remote rm, чтобы удалить удаленный URL из вашего хранилища.

    $ git remote -v
    # View current remotes
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
    > destination  https://github.com/FORKER/REPOSITORY.git (fetch)
    > destination  https://github.com/FORKER/REPOSITORY.git (push)

    $ git remote rm destination
    # Remove remote
    $ git remote -v
    # Verify it's gone
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.