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


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


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


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.


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


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 git@github.com:USERNAME/REPOSITORY.git

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

git remote -v Verifikasi URL jarak jauh baru

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

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

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


19

Tulis perintah di bawah ini dari terminal repo Anda:

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

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


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


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


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


11

Ubah remote git URI menjadi git@github.combukanhttps://github.com

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

Contoh:

git remote set-url origin git@github.com: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

10

Di Git Bash, masukkan perintah:

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

Masukkan Kredensial

Selesai



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



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>


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 

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


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


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


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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.