Πώς να αλλάξετε το URI (URL) για ένα απομακρυσμένο αποθετήριο Git;

Έχω ένα repo (origin) σε ένα κλειδί USB που έχω κλωνοποιήσει στο σκληρό μου δίσκο (τοπικά). Μετακίνησα το "origin" σε ένα NAS και δοκίμασα με επιτυχία την κλωνοποίησή του από εδώ.

Θα ήθελα να μάθω αν μπορώ να αλλάξω το URI του "origin" στις ρυθμίσεις του "local" έτσι ώστε να αντλεί τώρα από το NAS και όχι από το κλειδί USB.

Προς το παρόν, μπορώ να δω δύο λύσεις:

  • και να τα αντιγράψω ξανά στο NAS (συνεπάγεται πολλή δουλειά λόγω των νέων commits στο nas-origin),

  • να προσθέσω ένα νέο απομακρυσμένο στο "local" και να διαγράψω το παλιό (φοβάμαι ότι θα χαλάσω το ιστορικό μου).

Λύση

Μπορείτε να

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

(δείτε git help remote) ή μπορείτε απλά να επεξεργαστείτε το .git/config και να αλλάξετε τις διευθύνσεις URL εκεί. Δεν κινδυνεύετε να χάσετε το ιστορικό σας, εκτός αν κάνετε κάτι πολύ ανόητο (και αν ανησυχείτε, απλά κάντε ένα αντίγραφο του repo σας, αφού το repo σας είναι το ιστορικό σας).

Σχόλια (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)

Αλλαγή μιας απομακρυσμένης διεύθυνσης URL

Σχόλια (0)

Αλλαγή κεντρικού υπολογιστή για έναν διακομιστή προέλευσης Git

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

Ελπίζω ότι αυτό δεν είναι κάτι που πρέπει να κάνετε. Ο διακομιστής που χρησιμοποιούσα για να συνεργάζομαι σε μερικά έργα git είχε λήξει το όνομα τομέα. Αυτό σήμαινε ότι έπρεπε να βρω έναν τρόπο να μεταφέρω τα τοπικά αποθετήρια για να ξαναβρεθώ σε συγχρονισμό.

Ενημέρωση: Ευχαριστώ τον @mawolf για την επισήμανση ότι υπάρχει ένας εύκολος τρόπος με τις πρόσφατες εκδόσεις του git (post Feb, 2010):

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

Δείτε τη σελίδα man για λεπτομέρειες.

Αν χρησιμοποιείτε μια παλαιότερη έκδοση, τότε δοκιμάστε αυτό:

Ως προειδοποίηση, αυτό λειτουργεί μόνο εφόσον πρόκειται για τον ίδιο διακομιστή, απλά με διαφορετικά ονόματα.

Υποθέτοντας ότι το νέο hostname είναι 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.

Σχόλια (1)