Bagaimana cara mengubah URI (URL) untuk repositori Git jarak jauh?

3897

Saya memiliki repo (asal) pada kunci USB yang saya kloning di hard drive saya (lokal). Saya memindahkan "asal" ke NAS dan berhasil menguji kloningnya dari sini.

Saya ingin tahu apakah saya dapat mengubah URI "asal" dalam pengaturan "lokal" sehingga sekarang akan menarik dari NAS, dan bukan dari kunci USB.

Untuk saat ini, saya dapat melihat dua solusi:

  • dorong semuanya ke usb-orign, dan salin lagi ke NAS (menyiratkan banyak pekerjaan karena komitmen baru ke nas-origin);

  • tambahkan remote baru ke "lokal" dan hapus yang lama (saya khawatir saya akan memecah sejarah saya).

e-satis
sumber
6
Saya harus melakukan ini pada git versi lama (1.5.6.5) dan opsi set-url tidak ada. Cukup menghapus remote yang tidak diinginkan dan menambahkan yang baru dengan nama yang sama bekerja tanpa masalah dan mempertahankan sejarah dengan baik.
HotN
dalam kasus saya, saya perlu memeriksa izin saya, saya memiliki dua repositori git pribadi dan akun kedua ini adalah admin dari repo baru itu dan yang pertama adalah akun pengguna default saya dan saya harus memberikan izin kepada yang pertama
saber tabatabaee yazdi

Jawaban:

6335

Kamu bisa

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

(lihat git help remote) atau Anda bisa mengedit .git/configdan mengubah URL di sana. Anda tidak dalam bahaya kehilangan sejarah kecuali jika Anda melakukan sesuatu yang sangat konyol (dan jika Anda khawatir, cukup buat salinan repo Anda, karena repo Anda adalah sejarah Anda.)

hobbs
sumber
29
Jika Anda memiliki pengguna shell yang berbeda, maka mungkin Anda ingin menentukan pengguna git Anda di awal url baru misalnya:myself@git://new.url.here
sobi3ch
13
Anda juga mungkin ingin mengatur master cabang hulu untuk lokasi asal baru Anda dengan: git branch -u origin/master. Ini akan memungkinkan Anda untuk git pushtidak perlu git push origin mastersetiap kali.
kelorek
32
@kelorek atau Anda baru git push -u origin masterpertama kali :)
hobbs
26
Saya juga harus git remote set-url --push origin git://...mengatur asal ... (push) url.
jpillora
3
Untuk banyak cabang, Anda dapat menggunakan git push -u --alluntuk mendorong semua cabang sekaligus ke url baru (bukan git push -u origin master)
Ben
902
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)

Mengubah URL jarak jauh

Perkakas
sumber
100

Ubah Host untuk Server Asal Git

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

Semoga ini bukan sesuatu yang perlu Anda lakukan. Server yang saya gunakan untuk berkolaborasi pada beberapa proyek git dengan mana nama domain kadaluwarsa. Ini berarti menemukan cara untuk memigrasi repositori lokal untuk kembali sinkron.

Pembaruan: Terima kasih kepada @mawolf karena menunjukkan ada cara mudah dengan versi git terbaru (posting Feb, 2010):

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

Lihat halaman manual untuk detailnya.

Jika Anda menggunakan versi yang lebih lama, coba ini:

Sebagai peringatan, ini hanya berfungsi karena server yang sama, hanya dengan nama yang berbeda.

Dengan asumsi bahwa nama host baru adalah newhost.com, dan yang lama oldhost.com, perubahannya cukup sederhana.

Edit .git/configfile di direktori kerja Anda. Anda harus melihat sesuatu seperti:

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

Ubah oldhost.comke newhost.com, simpan file dan selesai.

Dari pengujian terbatas saya ( git pull origin; git push origin; gitx) semuanya tampak beres. Dan ya, saya tahu itu adalah bentuk yang buruk untuk mengacaukan git internal.

yoda
sumber
Bentuk buruk? Mungkin. Tetapi jika Anda perlu melakukan sesuatu yang penulis tidak harapkan ada yang perlu dilakukan, maka kadang-kadang mengacaukan internal diperlukan. Tetapi Anda harus mau menerima konsekuensinya jika Anda salah. Backup your local repository _before_ messing with git internals.
Jesse Chisholm
56
git remote set-url origin git://new.location

(Sebagai alternatif, buka .git/config, cari [remote "origin"], dan edit url =garis.

Anda dapat memeriksanya bekerja dengan memeriksa remote:

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

Lain kali Anda mendorong, Anda harus menentukan cabang hulu yang baru, misalnya:

git push -u origin master

Lihat juga: GitHub: Mengubah URL jarak jauh

Zaz
sumber
Saya tidak dapat menetapkan asal baru dengan mengedit .git / config. Dikatakan repositori git bernama dalam URL bukan repositori git. Setelah saya menghapus dan menciptakan kembali asal, semuanya baik-baik saja. Saya belum melihat git set-url remote sebagai solusi untuk masalah saya.
octopusgrabbus
+1 untuk memberikan jawaban lengkap dengan git push -uperintah. Mungkin jelas bagi orang lain, bukan untuk saya.
testphreak
37

Mengalihkan URL jarak jauh

Buka Terminal.

Langkah Ist: - Ubah direktori kerja saat ini ke proyek lokal Anda.

Langkah 2: - Buat daftar remote yang ada untuk mendapatkan nama remote yang ingin Anda ubah.

git remote -v

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

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

Ubah URL remote Anda dari HTTPS ke SSH dengan perintah git remote set-url.

Langkah 3: - git remote set-url origin [email protected]:USERNAME/REPOSITORY.git

Langkah 4: - Sekarang Verifikasi bahwa URL jarak jauh telah berubah.

git remote -v Verifikasi URL jarak jauh baru

origin  [email protected]:USERNAME/REPOSITORY.git (fetch)
origin  [email protected]:USERNAME/REPOSITORY.git (push)
VIKAS KOHLI
sumber
Apakah Anda harus menghapus sumber lama sebelum menambahkan sumber baru?
Sledge
Saya tidak menghapus dari proyek apa pun. Saya cukup melakukan langkah-langkah di atas dan berhasil
VIKAS KOHLI
27
  1. hapus origin menggunakan perintah pada gitbash git remote rm origin
  2. Dan sekarang tambahkan Origin baru menggunakan gitbash git remote add origin (Salin URL HTTP dari repositori proyek Anda dalam bit bucket) selesai
Sunil Chaudhary
sumber
Ini benar-benar jawaban yang berguna karena tanpa git remote rm origingit ingat detail tentang asal usul yang lama.
mato
Di atas git remote rm originmenyelesaikan masalah beberapa remote: masalah di mana saya tidak dapat mengatur url jarak jauh. remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
bitsand
21

set-url remote git {nama} {url}

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

bong jae choe
sumber
19

Tulis perintah di bawah ini dari terminal repo Anda:

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

Lihat tautan ini untuk detail lebih lanjut tentang mengubah url di remote.

viveknaskar
sumber
1
itu membantu. Tautan bermanfaat
ANP
16

jika Anda mengkloning lokal Anda secara otomatis akan terdiri,

URL jarak jauh tempat kloning.

Anda dapat memeriksanya menggunakan git remote -v

jika Anda ingin membuat perubahan di dalamnya,

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

sini,

asal - cabang Anda

jika Anda ingin menimpa cabang yang ada, Anda masih dapat menggunakannya .. itu akan menimpa cabang Anda yang ada ... itu akan dilakukan,

git remote remove url
and 
git remote add origin url

untukmu...

Mohideen bin Mohammed
sumber
Saya memiliki beberapa remote yang ditambahkan, jadi git remote rm origindiperlukan perintah untuk menghapus semua url yang terkait. Kemudian perintah add bekerja.
bitsand
14

Untuk memeriksa git koneksi jarak jauh:

git remote -v

Sekarang, atur repositori lokal ke remote git:

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

Sekarang untuk membuatnya upstream atau dorong gunakan kode berikut:

git push --set-upstream origin master -f

Anupam Maurya
sumber
1
Saya mendorong tetapi github tidak menunjukkan cabang baru saya. Yang terakhir --set-upstreammembuatnya bekerja.
OoDeLally
12

Anda memiliki banyak cara untuk melakukan itu:

Menghibur

git remote set-url origin [Here new url] 

Pastikan Anda membukanya di tempat repositori.

Konfigurasi

Ini ditempatkan di .git / config (folder yang sama dengan repositori)

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

TortoiseGit

Langkah 1 - buka pengaturan

Langkah 2 - ubah url

Maka cukup edit URL.

SourceTree

  1. Klik tombol "Pengaturan" pada bilah alat untuk membuka jendela Pengaturan Repositori.

  2. Klik "Tambah" untuk menambahkan jalur repositori jarak jauh ke repositori. Jendela "Detail jarak jauh" akan terbuka.

  3. Masukkan nama untuk jalur jauh.

  4. Masukkan URL / Path untuk repositori jarak jauh

  5. Masukkan nama pengguna untuk layanan hosting untuk repositori jarak jauh.

  6. Klik 'OK' untuk menambahkan jalur jarak jauh.

  7. Kembali ke jendela Pengaturan Repositori, klik 'OK'. Jalur jarak jauh baru harus ditambahkan pada repositori sekarang.

  8. Jika Anda perlu mengedit jalur jarak jauh yang sudah ditambahkan, cukup klik tombol 'Edit'. Anda harus diarahkan ke jendela "Detail jarak jauh" tempat Anda dapat mengedit detail (URL / Jalur / Jenis Host) dari jalur jarak jauh.

  9. Untuk menghapus jalur repositori jarak jauh, klik tombol 'Hapus'

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

ref. Dukung

Przemek Struciński
sumber
11

Ubah remote git URI menjadi [email protected]bukanhttps://github.com

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

Contoh:

git remote set-url origin [email protected]:Chetabahana/my_repo_name.git

Keuntungannya adalah Anda dapat melakukannya git pushsecara otomatis ketika Anda menggunakan 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

Letakkan file skrip $HOME/.ssh/agentuntuk menjalankannya ssh-addmenggunakan harapan seperti di bawah ini:

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

Di Git Bash, masukkan perintah:

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

Masukkan Kredensial

Selesai

devDeejay
sumber
10

Saya telah bekerja:

git remote set-url origin <project>
Diego Santa Cruz Mendezú
sumber
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
sumber
8
Ketika menambahkan jawaban ke pertanyaan berusia sepuluh tahun dengan dua puluh satu jawaban lain, sangat penting untuk menyertakan penjelasan tentang jawaban Anda dan menunjukkan aspek baru dari pertanyaan yang dijawab oleh jawaban Anda. Dengan jawaban yang merupakan serangkaian perintah, berguna untuk menjelaskan apa yang dilakukan masing-masing dan bagaimana membatalkan efek masing-masing jika itu mungkin. Membatalkan penting jika seseorang mampu melakukan beberapa langkah pertama, tetapi kemudian menemukan kesalahan pada langkah selanjutnya.
Jason Aller
@ Jason Aller Saya pikir ini cukup jelas sekalipun dan itu adalah jawaban terbaik sejauh ini, yang lain adalah lelucon.
Oliver Dixon
7

Jika Anda menggunakan TortoiseGit maka ikuti langkah-langkah di bawah ini:

  1. Buka folder checkout lokal Anda dan klik kanan untuk menuju TortoiseGit -> Settings
  2. Di panel kiri pilih Git -> Remote
  3. Di panel kanan pilih origin
  4. Sekarang ubah nilai URLkotak teks ke tempat repositori jarak jauh Anda yang baru

Cabang Anda dan semua komitmen lokal Anda akan tetap utuh dan Anda dapat tetap bekerja seperti sebelumnya.

Vipul bhojwani
sumber
3

Untuk mengubah hulu jarak jauh: git remote set-url origin <url>


Untuk menambahkan lebih banyak upstream: git remote add newplace <url>

Jadi Anda bisa memilih tempat bekerja git push origin <branch>ataugit push newplace <branch>

Anderson Cossul
sumber
1
Saya tidak dapat menemukan sebutan lain untuk bekerja di beberapa upstreams ..
Anderson Cossul
2

Anda dapat mengubah url dengan mengedit file konfigurasi. Buka root proyek Anda:

nano .git/config

Kemudian edit bidang url dan atur url baru Anda. Simpan perubahannya. Anda dapat memverifikasi perubahan dengan menggunakan perintah.

git remote -v 
Abhi Das
sumber
1

Bagi mereka yang ingin melakukan perubahan ini dari Visual Studio 2019

Buka Penjelajah Tim (Ctrl + M)

Beranda -> Pengaturan

Git -> Pengaturan Repositori

Remote -> Edit

masukkan deskripsi gambar di sini

Dinch
sumber
1

Jika repositori Anda bersifat pribadi, maka

  1. Buka Control Panel dari menu Start
  2. Pilih Akun Pengguna
  3. Pilih "Kelola kredensial Anda" di menu sebelah kiri
  4. Hapus kredensial yang terkait dengan Git atau GitHub

Referensi

Mike Lee
sumber
1

periksa hak istimewa Anda

dalam kasus saya, saya perlu memeriksa nama pengguna saya

saya punya dua atau tiga repositori dengan kredensial terpisah.

masalah adalah izin saya, saya punya dua private git server dan repositori

akun kedua ini adalah admin dari repo baru itu dan yang pertama adalah akun pengguna default saya dan saya harus memberikan izin terlebih dahulu

saber tabatabaee yazdi
sumber
0

Menghapus remote

Gunakan perintah git remote rm untuk menghapus URL jarak jauh dari repositori Anda.

    $ git remote -v
    # View current remotes
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
    > destination  https://github.com/FORKER/REPOSITORY.git (fetch)
    > destination  https://github.com/FORKER/REPOSITORY.git (push)

    $ git remote rm destination
    # Remove remote
    $ git remote -v
    # Verify it's gone
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
Tayyab Roy
sumber