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ę).

e-satis
źródło
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).

Hobbs
źródło
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

Naczynie
źródło
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.

Yoda
źródło
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

Zaz
źródło
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 [email protected]:USERNAME/REPOSITORY.git

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

git remote -v Sprawdź nowy zdalny adres URL

origin  [email protected]:USERNAME/REPOSITORY.git (fetch)
origin  [email protected]:USERNAME/REPOSITORY.git (push)
VIKAS KOHLI
źródło
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
Sunil Chaudhary
źródło
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

bong jae choe
źródło
18

Napisz poniższe polecenie z terminala repo:

git remote set-url origin [email protected]:<username>/<repo>.git

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

viveknaskar
źródło
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...

Mohideen bin Mohammed
źródło
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

Anupam Maurya
źródło
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 [email protected]zamiasthttps://github.com

git remote set-url origin [email protected]:<username>/<repo>.git

Przykład:

git remote set-url origin [email protected]: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
Chetabahana
źródło
10

W Git Bash wpisz polecenie:

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

Wprowadź poświadczenia

Gotowy

devDeejay
źródło
10

Pracowałem:

git remote set-url origin <project>
Diego Santa Cruz Mendezú
źródło
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

Przemek Struciński
źródło
9
$ git remote rm origin
$ git remote add origin [email protected]:aplikacjainfo/proj1.git
$ git config master.remote origin
$ git config master.merge refs/heads/master
Zahid Hassan Shaikot
źródło
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.

Vipul Bhojwani
źródło
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>

Anderson Cossul
źródło
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 
Abhi Das
źródło
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

Dinch
źródło
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

Mike Lee
źródło
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

szabla tabatabaee yazdi
źródło