Git: изменить URL-адрес удаленного репо

Хотя я изначально думал, что удаленный репозиторий очень редко меняет местоположение, на самом деле это происходит гораздо чаще, чем я предполагал. Удаленное репо может изменяться с одного частного сервера на другой (например, NAS), с личного репозитория GitHub на репо в организации или, возможно, даже с GitHub на GitLab. Когда это произойдет, вам нужно будет изменить URL-адрес вашего удаленного репозитория в вашем локальном репозитории. В этой короткой статье я расскажу именно об этом. Во-первых, сразу перейдем к командиру

Хотя я изначально думал, что удаленный репозиторий очень редко меняет местоположение, на самом деле это происходит гораздо чаще, чем я предполагал. Удаленное репо может изменяться с одного частного сервера на другой (например, NAS), с личного репозитория GitHub на репо в организации или, возможно, даже с GitHub на GitLab.

Когда это произойдет, вам нужно будет изменить URL-адрес вашего удаленного репозитория в вашем локальном репозитории. В этой короткой статье я расскажу именно об этом.

Во-первых, давайте сразу перейдем к команде, для которой вы здесь:

 $ git remote set-url <remote-repo> <remote-repo-url> 

Поэтому, если вы хотите изменить URL-адрес "origin" на новый URL-адрес в моей учетной записи GitHub, команда может выглядеть примерно так:

 $ git remote set-url origin https://github.com/scottwrobinson/foobar.git 

Затем вы можете убедиться, что URL-адрес был обновлен с помощью remote команды с параметром -v , который является сокращением от --verbose :

 $ git remote -v 
 origin https://github.com/scottwrobinson/foobar.git (fetch) 
 origin https://github.com/scottwrobinson/foobar.git (push) 

Установка разных репозиториев для выборки и отправки

Как вы можете видеть в выводе команды remote -v , показаны две строки, одна из которых относится к fetch а другая - к push . Это означает, что вы также можете установить разные URL-адреса в зависимости от того, какую команду вы выполняете.

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

 $ git remote set-url <remote-repo> <original-repo-url> 
 $ git remote set-url --push <remote-repo> <forked-repo-url> 

Обратите внимание, что вторая команда использует параметр --push , который указывает Git устанавливать этот URL-адрес только для команд push На практике выполнение команды выглядело бы примерно так:

 $ git remote set-url origin https://github.com/example/foobar.git 
 $ git remote set-url --push origin https://github.com/scottwrobinson/foobar.git 

Обратите внимание, что удаленное репо названо "origin" для обоих, и отличается только URL-адрес. В этом примере https://github.com/scottwrobinson/foobar.git - это разветвленная версия.

Опять же, запустив remote -v мы можем убедиться, что URL-адрес был успешно изменен:

 $ git remote -v 
 origin https://github.com/example/foobar.git (fetch) 
 origin https://github.com/scottwrobinson/foobar.git (push) 

Использование разных протоколов

Еще я хотел отметить, что во всех приведенных выше примерах я показал только URL-адреса HTTPS, хотя можно использовать любой действительный URL-адрес Git. Git поддерживает большое количество типов URL-адресов, некоторые из которых вы можете найти здесь:

 ssh:// [email protected] /path/to/repo.git 
 git://host.com/path/to/repo.git 
 https://host.com/path/to/repo.git 
 file:///path/to/repo.git 

Поэтому, если по какой-либо причине вы хотите получить данные из удаленного репо на GitHub, но затем передать свои изменения только в другое репо, доступное из вашей файловой системы, тогда Git достаточно гибок, чтобы вы могли это сделать:

 $ git remote set-url origin [email protected] :example/foobar.git 
 $ git remote set-url --push origin file://~/projects/foobar.git 
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus