Jak zmienić identyfikator URI (URL) dla zdalnego repozytorium Git?


3891

Mam repozytorium (pochodzenie) na kluczu USB, który sklonowałem na dysku twardym (lokalnym). Przeniosłem „origin” na NAS i z powodzeniem przetestowałem klonowanie go stąd.

Chciałbym wiedzieć, czy mogę zmienić identyfikator URI „origin” w ustawieniach „local”, aby teraz pobierał z NAS, a nie z klucza USB.

Na razie widzę dwa rozwiązania:

  • wepchnij wszystko do pamięci USB i skopiuj ją ponownie do NAS (implikuje to dużo pracy z powodu nowych zmian w pochodzeniu z nas);

  • dodaj nowego pilota do „lokalnego” i usuń stary (obawiam się, że popsuję historię).


6
Musiałem to zrobić na starej wersji git (1.5.6.5) i opcja set-url nie istniała. Po prostu usunięcie niechcianego pilota i dodanie nowego o tej samej nazwie działało bez problemu i dobrze zachowywała historię.
HotN

w moim przypadku muszę sprawdzić swoje uprawnienia, mam dwa prywatne repozytoria git, a to drugie konto jest administratorem tego nowego repozytorium, a pierwsze jest moim domyślnym kontem użytkownika i powinienem udzielić zgody na pierwsze
szabla tabatabaee yazdi

Odpowiedzi:


6325

Możesz

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

(patrz git help remote) lub możesz po prostu edytować .git/configi zmieniać tam adresy URL. Nie grozi Ci utrata historii, chyba że zrobisz coś bardzo głupiego (a jeśli się martwisz, po prostu zrób kopię swojego repozytorium, ponieważ repo to Twoja historia).


29
Jeśli masz innego użytkownika powłoki, być może chcesz podać swojego użytkownika git na początku nowego myself@git://new.url.here
adresu

13
Można też ustawić główny oddział upstream do nowego miejsca pochodzenia z: git branch -u origin/master. Pozwoli ci to po prostu git pushzamiast za git push origin masterkażdym razem.
kelorek,

32
@kelorek albo możesz po git push -u origin masterraz pierwszy :)
hobbs

26
Musiałem też git remote set-url --push origin git://..., aby ustawić pochodzenie ... (push) URL.
jpillora

3
W przypadku wielu gałęzi możesz użyć, git push -u --allaby wypchnąć wszystkie gałęzie na nowy adres URL (zamiast git push -u origin master)
Ben

901
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)

Zmiana adresu URL pilota


100

Zmień hosta dla serwera Git Origin

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

Mam nadzieję, że nie jest to coś, co musisz zrobić. Serwer, z którego korzystałem do współpracy przy kilku projektach git, wygasł nazwa domeny. Oznaczało to znalezienie sposobu migracji lokalnych repozytoriów, aby odzyskać synchronizację.

Aktualizacja: Podziękowania dla @mawolf za wskazanie, że jest łatwy sposób dzięki najnowszym wersjom git (post luty, 2010):

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

Szczegółowe informacje można znaleźć na stronie podręcznika man.

Jeśli korzystasz ze starszej wersji, spróbuj tego:

Z zastrzeżeniem, działa to tylko, ponieważ jest to ten sam serwer, tylko z różnymi nazwami.

Zakładając, że nowa nazwa hosta to newhost.com, a stara była oldhost.com, zmiana jest dość prosta.

Edytuj .git/configplik w swoim katalogu roboczym. Powinieneś zobaczyć coś takiego:

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

Zmień oldhost.comna newhost.com, zapisz plik i gotowe.

Z moich ograniczonych testów ( git pull origin; git push origin; gitx) wszystko wydaje się być w porządku. I tak, wiem, że to zły sposób na bałagan z wewnętrznymi elementami gita.


Zła forma? Być może. Ale jeśli trzeba coś zrobić autorzy nie oczekiwać, że ktoś kiedykolwiek trzeba zrobić, to czasami brudząc z wewnętrznych jest wymagane. Ale musisz być gotów zaakceptować konsekwencje, jeśli pomylisz się. Backup your local repository _before_ messing with git internals.
Jesse Chisholm,

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

(alternatywnie otwórz .git/config, wyszukaj [remote "origin"]i edytuj url =linię.

Możesz sprawdzić, czy zadziałało, sprawdzając piloty:

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

Następnym razem, gdy będziesz pchać, będziesz musiał określić nową gałąź nadrzędną, np .:

git push -u origin master

Zobacz także: GitHub: zmiana adresu URL pilota


Nie mogłem ustawić nowego źródła poprzez edycję .git / config. Powiedział, że repozytorium git o nazwie pod adresem URL nie jest repozytorium git. Po usunięciu i ponownym utworzeniu źródła wszystko było dobrze. Jednak nie szukałem zdalnego adresu URL git jako rozwiązania mojego problemu.
octopusgrabbus

+1 za udzielenie pełnej odpowiedzi z git push -upoleceniem. Może oczywiste dla innych, nie było dla mnie.
testphreak

37

Przełączanie zdalnych adresów URL

Otwórz terminal.

I krok: - Zmień bieżący katalog roboczy na projekt lokalny.

Drugi krok: - Wymień istniejące piloty, aby uzyskać nazwę pilota, który chcesz zmienić.

git remote -v

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

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

Zmień adres URL pilota z HTTPS na SSH za pomocą polecenia git remote set-url.

Etap 3: - git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

Czwarty krok: - Teraz sprawdź, czy zdalny adres URL się zmienił.

git remote -v Sprawdź nowy zdalny adres URL

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

Czy musisz usunąć stare pochodzenie przed dodaniem nowego?
Sanecz

Nie usunąłem z projektu niczego. Po prostu wykonuję powyższe kroki i zadziałało
VIKAS KOHLI

27
  1. usuń początek za pomocą komendy gitbash git rm zdalnego pochodzenia
  2. A teraz dodaj nowy Origin za pomocą gitbash git zdalnie dodaj pochodzenie (Skopiuj adres URL HTTP z repozytorium projektu w wiadrze bitów) gotowe

To naprawdę przydatna odpowiedź, ponieważ bez git remote rm origingit zapamiętuje szczegóły dotyczące starego pochodzenia.
mato,

Powyższe git remote rm originrozwiązuje problem wielu pilotów: problem, w którym nie byłem w stanie ustawić zdalnego adresu URL. remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
bit i

21

git remote set-url {name} {url}

dawny) git remote set-url origin https://github.com/myName/GitTest.git


18

Napisz poniższe polecenie z terminala repo:

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

Patrz ten link, aby uzyskać więcej informacji o zmianie adresu w pilocie.


1
pomogło. Link był przydatny
ANP

16

jeśli sklonowałeś, lokalny automatycznie się składa,

zdalny adres URL, w którym zostanie sklonowany.

możesz to sprawdzić za pomocą git remote -v

jeśli chcesz wprowadzić zmiany,

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

tutaj,

pochodzenie - twoja gałąź

jeśli chcesz zastąpić istniejący oddział, możesz go nadal używać. Zastąpi on twój istniejący ... zrobi to,

git remote remove url
and 
git remote add origin url

dla Was...


Dodałem wiele pilotów, więc git remote rm originpolecenie było potrzebne do usunięcia wszystkich powiązanych adresów URL. Następnie zadziałało polecenie dodawania.
bit i

14

Aby sprawdzić połączenie zdalne git:

git remote -v

Teraz ustaw lokalne repozytorium na zdalny git:

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

Teraz, aby zrobić to upstream lub push, użyj następującego kodu:

git push --set-upstream origin master -f


1
Naciskałem, a mimo to github nie pokazał mojej nowej gałęzi. To ostatnie --set-upstreamsprawiło, że zadziałało.
OoDeLally

11

Zmień zdalny identyfikator URI git na git@github.comzamiasthttps://github.com

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

Przykład:

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

Korzyścią jest to, że możesz to zrobić git pushautomatycznie, gdy używasz 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

Umieść plik skryptu, $HOME/.ssh/agentaby działał, ssh-addużywając metody expect, jak poniżej:

#!/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

W Git Bash wpisz polecenie:

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

Wprowadź poświadczenia

Gotowy



10

Masz na to wiele sposobów:

Konsola

git remote set-url origin [Here new url] 

Tylko upewnij się, że otworzyłeś go w miejscu, w którym znajduje się repozytorium.

Config

Jest umieszczony w .git / config (ten sam folder co repozytorium)

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

TortoiseGit

Krok 1 - otwórz ustawienia

Krok 2 - zmień adres URL

Następnie po prostu edytuj adres URL.

SourceTree

  1. Kliknij przycisk „Ustawienia” na pasku narzędzi, aby otworzyć okno Ustawienia repozytorium.

  2. Kliknij „Dodaj”, aby dodać ścieżkę zdalnego repozytorium do repozytorium. Otworzy się okno „Szczegóły zdalne”.

  3. Wpisz nazwę zdalnej ścieżki.

  4. Wprowadź adres URL / ścieżkę do zdalnego repozytorium

  5. Wprowadź nazwę użytkownika dla usługi hostingowej dla zdalnego repozytorium.

  6. Kliknij „OK”, aby dodać ścieżkę zdalną.

  7. W oknie Ustawienia repozytorium kliknij „OK”. Nowa zdalna ścieżka powinna zostać teraz dodana do repozytorium.

  8. Jeśli chcesz edytować już dodaną ścieżkę zdalną, po prostu kliknij przycisk „Edytuj”. Powinieneś zostać przekierowany do okna „Zdalne szczegóły”, w którym możesz edytować szczegóły (URL / Ścieżka / Typ Hosta) zdalnej ścieżki.

  9. Aby usunąć ścieżkę zdalnego repozytorium, kliknij przycisk „Usuń”

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

ref. Wsparcie


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
Dodając odpowiedź do dziesięcioletniego pytania zawierającego dwadzieścia jeden innych odpowiedzi, naprawdę ważne jest, aby dołączyć wyjaśnienie swojej odpowiedzi i wskazać, jaki nowy aspekt pytania dotyczy twoich odpowiedzi. W odpowiedziach, które są serią poleceń, warto wyjaśnić, co każdy robi i jak cofnąć efekty każdego z nich, jeśli jest to możliwe. Cofanie jest ważne w przypadku, gdy ktoś jest w stanie wykonać kilka pierwszych kroków, ale później napotka błąd.
Jason Aller

@JasonAller Myślę, że jest to jednak dość oczywiste i jest to jak dotąd najlepsza odpowiedź, inne są żartem.
Oliver Dixon

7

Jeśli używasz TortoiseGit, wykonaj następujące czynności:

  1. Przejdź do lokalnego folderu kasy i kliknij prawym przyciskiem myszy, aby przejść do TortoiseGit -> Settings
  2. W lewym okienku wybierz Git -> Remote
  3. W prawym panelu wybierz origin
  4. Teraz zmień URLwartość pola tekstowego na kiedykolwiek nowe zdalne repozytorium

Twój oddział i wszystkie lokalne zobowiązania pozostaną nienaruszone i będziesz mógł nadal pracować tak jak wcześniej.



3

Aby zmienić zdalny upstream: git remote set-url origin <url>


Aby dodać więcej strumieni upstream: git remote add newplace <url>

Możesz więc wybrać, gdzie chcesz pracować git push origin <branch>lubgit push newplace <branch>


1
Nie mogłem znaleźć innych wzmianek o pracy w wielu upstreamach.
Anderson Cossul

2

Możesz zmienić adres URL, edytując plik konfiguracyjny. Przejdź do katalogu głównego projektu:

nano .git/config

Następnie edytuj pole adresu URL i ustaw nowy adres URL. Zapisz zmiany. Możesz zweryfikować zmiany za pomocą polecenia.

git remote -v 

1

Dla tych, którzy chcą wprowadzić tę zmianę w programie Visual Studio 2019

Otwórz Team Explorer (Ctrl + M)

Strona główna -> Ustawienia

Git -> Ustawienia repozytorium

Piloty -> Edytuj

wprowadź opis zdjęcia tutaj


1

Jeśli twoje repozytorium jest prywatne, to

  1. Otwórz Panel sterowania z menu Start
  2. Wybierz konta użytkowników
  3. Wybierz „Zarządzaj swoimi danymi uwierzytelniającymi” w menu po lewej stronie
  4. Usuń wszelkie poświadczenia związane z Git lub GitHub

Odniesienie


1

sprawdź swój przywilej

w moim przypadku muszę sprawdzić swoją nazwę użytkownika

Mam dwa lub trzy repozytorium z osobnymi danymi uwierzytelniającymi.

Problemem jest moje pozwolenie Mam dwa prywatne serwery git i repozytoria

to drugie konto jest administratorem tego nowego repozytorium, a pierwsze jest moim domyślnym kontem użytkownika i powinienem udzielić pozwolenia na pierwsze

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.