Hvordan ændrer man URI'en (URL) for et fjernt Git-repositorium?

Jeg har en repo (origin) på en USB-nøgle, som jeg har klonet på min harddisk (lokalt). Jeg flyttede "origin" til en NAS og testede med succes at klone den herfra.

Jeg vil gerne vide, om jeg kan ændre URI'en for "origin" i indstillingerne for "local", så den nu trækker fra NAS'en og ikke fra USB-nøglen.

Indtil videre kan jeg se to løsninger:

  • skubbe alt til usb-orign, og kopiere det til NAS'en igen (indebærer en masse arbejde på grund af nye commits til nas-origin);

  • tilføje en ny fjernbetjening til "local" og slette den gamle (jeg er bange for, at jeg'vil ødelægge min historie).

Løsning

Du kan

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

(se git help remote) eller du kan bare redigere .git/config og ændre URL'erne der. Du'er ikke i fare for at miste historikken, medmindre du gør noget meget dumt (og hvis du'er bekymret, kan du bare lave en kopi af dit repo, da dit repo er din historik).

Kommentarer (13)
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)

Ændring af en fjernbetjenings URL

Kommentarer (0)

Skift vært for en Git Origin-server

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

Forhåbentlig er det ikke noget, du skal gøre. Den server, som jeg har brugt til at samarbejde om et par git-projekter med, fik domænenavnet til at udløbe. Dette betød at finde en måde at migrere de lokale repositories på for at komme tilbage i synkronisering.

Opdatering: Tak til @mawolf for at påpege, at der er en nem måde med nyere git-versioner (post Feb, 2010):

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

Se man-siden for detaljer.

Hvis du bruger en ældre version, så prøv dette:

Det virker kun, hvis det er den samme server, bare med forskellige navne.

Hvis vi antager at det nye hostnavn er newhost.com, og det gamle var oldhost.com, så er ændringen ret simpel.

Rediger filen .git/config i din arbejdsmappe. Du bør se noget i stil med:

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

Ændr oldhost.com til newhost.com, gem filen, og så er du færdig.

Ud fra min begrænsede test (git pull origin; git push origin; gitx) ser alt ud til at være i orden. Og ja, jeg ved godt, at det er dårlig stil at rode med git-internals.

Kommentarer (1)