Uzak Git deposu için URI'yi (URL) nasıl değiştirebilirim?


3892

Sabit diskime (yerel) klonladığım bir USB anahtarında repo (orijin) var. "Orijini" bir NAS'a taşıdım ve buradan kopyalamayı başarıyla test ettim.

"Yerel" ayarlarında "orijin" URI'sini değiştirip değiştiremeyeceğimi bilmek istiyorum, böylece şimdi USB anahtarından değil NAS'dan çekilecek.

Şimdilik iki çözüm görebiliyorum:

  • her şeyi usb orign'e itin ve tekrar NAS'a kopyalayın (nas menşeli yeni taahhütler nedeniyle çok fazla iş anlamına gelir);

  • "yerel" için yeni bir uzaktan kumanda ekleyin ve eskisini silin (korkarım tarihimi kıracağım).


6
Bunu git (1.5.6.5) 'in eski bir sürümünde yapmak zorunda kaldım ve set-url seçeneği yoktu. Sadece istenmeyen uzaktan kumandayı silmek ve aynı ada sahip yeni bir uzaktan kumanda eklemek sorunsuz bir şekilde çalıştı ve geçmişini iyi korudu.
HotN

benim durumumda iki özel git depo var ve bu ikinci hesap bu yeni repo admin ve ilk benim varsayılan kullanıcı hesabı ve ilk izin vermeliyim
sabre tabatabaee yazdi

Yanıtlar:


6329

Yapabilirsin

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

(bkz. git help remote) veya yalnızca .git/configURL'leri düzenleyebilir ve değiştirebilirsiniz. Sen çok saçma bir şey yapmak sürece tarihini kaybetme tehlikesi içinde değiliz (Endişeliysen sizin Repo beri ve sadece senin repo bir kopyasını olduğunu geçmişiniz.)


29
Farklı bir kabuk kullanıcısı varsa, belki yeni url başlangıcında git kullanıcınızı belirtmek istersiniz, örneğin:myself@git://new.url.here
sobi3ch

13
Ayrıca birlikte yeni kökenli konum için ana memba şube ayarlamak isteyebilirsiniz: git branch -u origin/master. Bu, her seferinde git pushyapmak yerine, size izin verecektir git push origin master.
kelorek

32
@kelorek ya da sadece git push -u origin masterilk kez yapabilirsiniz :)
hobbs

26
Ayrıca git remote set-url --push origin git://...kökeni ayarlamak için ... (itme) url gerekiyordu.
jpillora

3
Birden çok şube için, git push -u --alltüm dalları bir kerede yeni URL'ye (yerine git push -u origin master) itmek için kullanabilirsiniz
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)

Uzaktan kumandanın URL'sini değiştirme


100

Git Origin Sunucusu için Ana Bilgisayarı Değiştirme

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

Umarım bu yapmanız gereken bir şey değildir. Birkaç git projesinde işbirliği yapmak için kullandığım sunucunun etki alanı adının süresi dolmuştu. Bu, senkronize geri dönmek için yerel depoları taşımanın bir yolunu bulmak anlamına geliyordu.

Güncelleme: @mawolf'a işaret ettiği için son git sürümleri için kolay bir yol var (post Şubat, 2010):

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

Ayrıntılar için kılavuz sayfasına bakınız.

Eski bir sürümdeyseniz şunu deneyin:

Bir uyarı olarak, bu sadece aynı sunucu olduğu gibi çalışır, sadece farklı adlarla.

Yeni ana bilgisayar adının newhost.comve eskisinin olduğu varsayıldığında oldhost.com, değişiklik oldukça basittir.

Düzen .git/configçalışma dizinindeki dosya. Şuna benzer bir şey görmelisiniz:

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

Değişim oldhost.comiçin newhost.comdosyayı kaydetmektedir ve bitirdiniz.

Sınırlı testlerimden ( git pull origin; git push origin; gitx) her şey yolunda görünüyor. Ve evet, git internals ile uğraşmanın kötü bir form olduğunu biliyorum.


Kötü form? Belki. Ancak yazarların kimsenin yapması gerekmeyeceğini ummadığınız bir şey yapmanız gerekiyorsa , bazen iç kısımlarla uğraşmak gerekir. Ama yanlış yaparsanız sonuçları kabul etmeye istekli olmalısınız. Backup your local repository _before_ messing with git internals.
Jesse Chisholm

56
git remote set-url origin git://new.location

(alternatif olarak satırı açın .git/config, arayın [remote "origin"]ve düzenleyin url =.

Uzaktan kumandaları inceleyerek çalışıp çalışmadığını kontrol edebilirsiniz:

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

Bir sonraki basışınızda, yeni yukarı akış dalını belirtmeniz gerekir, örneğin:

git push -u origin master

Ayrıca bkz: GitHub: Uzaktan kumandanın URL'sini değiştirme


.Git / config düzenleyerek yeni kaynağı ayarlayamadım. URL'de adı geçen git deposunun git deposu olmadığını söyledi. Kökeni kaldırıp yeniden oluşturduğumda her şey yolundaydı. Ben sorunum için bir çözüm olarak git uzak set-url bakmamıştı.
octopusgrabbus

git push -uKomut ile tam bir cevap sağlamak için +1 . Belki başkaları için açıktır, benim için değildi.
testphreak

37

Uzak URL'leri değiştirme

Terminal'i açın.

Ist Adım: - Geçerli çalışma dizinini yerel projenize değiştirin.

2. Adım: - Değiştirmek istediğiniz uzaktan kumandanın adını almak için mevcut uzaktan kumandalarınızı listeleyin.

git remote -v

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

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

Git remote set-url komutuyla uzaktan kumandanızın URL'sini HTTPS'den SSH'ye değiştirin.

3. Adım: - git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

4. Adım: - Şimdi uzak URL'nin değiştiğini doğrulayın.

git remote -v Yeni uzak URL'yi doğrulayın

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

Yeni kaynağı eklemeden önce eski kaynağı kaldırmanız gerekiyor mu?
Kızak

Projeden hiçbir şey çıkarmadım. Ben sadece yukarıdaki adımları yapmak ve işe yaradı
VIKAS KOHLI

27
  1. gitbash komutunu kullanarak başlangıç ​​noktasını kaldır git rm origin
  2. Ve şimdi gitbash git remote add origin kullanarak yeni Origin ekleyin (Bit deposunda HTTP deponuzu proje havuzunuzdan kopyalayın) tamamlandı

Bu gerçekten yararlı bir cevap çünkü git remote rm origingit olmadan eski köken hakkındaki detayları hatırlıyor.
mato

Yukarıdakiler git remote rm originbirden fazla uzaktan kumanda sorununu çözer: uzak URL'yi ayarlayamadığım sorun. remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
bitsve

21

git remote set-url {isim} {url}

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


18

Repo terminalinizden aşağıdaki komutu yazın:

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

Uzaktan kumandadaki URL'yi değiştirme hakkında daha fazla bilgi için bu bağlantıya bakın .


1
Bağlantı yararlı oldu
ANP

16

yerel klonlanan varsa otomatik olarak oluşur,

klonlandığı uzak URL.

kullanarak kontrol edebilirsiniz git remote -v

içinde değişiklik yapmak istiyorsanız,

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

buraya,

kökeni - şubeniz

İstersen üzerine o yapacak, mevcut şube hala ... Bu mevcut anahtar geçersiz kılar .. kullanabilirsiniz,

git remote remove url
and 
git remote add origin url

senin için...


Birden fazla uzaktan kumanda ekledim, bu yüzden git remote rm originilişkili tüm URL'leri kaldırmak için komut gerekiyordu. Sonra add komutu çalıştı.
bit ve

14

Git uzaktan bağlantısını kontrol etmek için:

git remote -v

Şimdi, yerel depoyu uzak git olarak ayarlayın:

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

Şimdi yukarı akış yapmak veya aşağıdaki kodu kullanın:

git push --set-upstream origin master -f


1
İtiyordum ve github yeni şubemi göstermedi. Sonuncusu --set-upstreamişe yaradı.
OoDeLally

11

Bunu yapmanın birçok yolu var:

konsol

git remote set-url origin [Here new url] 

Sadece deponun olduğu bir yerde açtığınızdan emin olun.

Yapılandırma

.Git / config (depoyla aynı klasör) içine yerleştirilir

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

TortoiseGit

Adım 1 - Ayarları Aç

2.Adım - URL'yi değiştirin

Ardından URL'yi düzenleyin.

SourceTree

  1. Depo Ayarları penceresini açmak için araç çubuğundaki "Ayarlar" düğmesini tıklayın.

  2. Depoya uzak bir depo yolu eklemek için "Ekle" yi tıklayın. Bir "Uzak ayrıntılar" penceresi açılacaktır.

  3. Uzak yol için bir ad girin.

  4. Uzak depo için URL / Yol girin

  5. Uzak deponun barındırma hizmetinin kullanıcı adını girin.

  6. Uzak yolu eklemek için 'Tamam'ı tıklayın.

  7. Depo Ayarları penceresine geri döndüğünüzde 'Tamam'ı tıklayın. Yeni uzak yol depoya şimdi eklenmelidir.

  8. Önceden eklenmiş bir uzak yolu düzenlemeniz gerekirse, 'Düzenle' düğmesini tıklamanız yeterlidir. Uzak yolun ayrıntılarını (URL / Yol / Ana Bilgisayar Türü) düzenleyebileceğiniz "Uzak ayrıntılar" penceresine yönlendirilmelisiniz.

  9. Uzak bir depo yolunu kaldırmak için 'Kaldır' düğmesini tıklayın

resim açıklamasını buraya girin

resim açıklamasını buraya girin

ref. Destek


11

Uzak git URI'sini git@github.comyerine olarak değiştirinhttps://github.com

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

Misal:

git remote set-url origin git@github.com:Chetabahana/my_repo_name.git

Avantajı, ssh-agent kullanırken git pushotomatik olarak yapabilmenizdir :

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

Bir komut dosyası koyun $HOME/.ssh/agento çalışır izin ssh-addkullanarak beklediğinin aşağıda:

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

Git Bash'e şu komutu girin:

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

Kimlik Bilgilerini Girin

Bitti



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
Yirmi bir yanıtı olan on yaşındaki bir soruya cevap eklerken, cevabınıza bir açıklama eklemek ve cevabınızın hangi yeni yönünü ele aldığını belirtmek gerçekten önemlidir. Bir dizi komut olan cevaplarla, her birinin ne yaptığını ve mümkünse her birinin etkilerini nasıl geri alabileceğinizi açıklamak yararlıdır. Geri alma işlemi, birinin ilk birkaç adımı gerçekleştirebilmesi, ancak daha sonraki bir adımda bir hatayla karşılaşması durumunda önemlidir.
Jason Aller

@JasonAller Bunun oldukça açıklayıcı olduğunu düşünüyorum ve buradaki en iyi cevap, diğerleri bir şaka.
Oliver Dixon

7

TortoiseGit kullanıyorsanız, aşağıdaki adımları izleyin:

  1. Yerel ödeme klasörünüze gidin ve gitmek için sağ tıklayın TortoiseGit -> Settings
  2. Sol bölmede Git -> Remote
  3. Sağ bölmede origin
  4. Şimdi URLmetin kutusu değerini yeni uzak deponuzun olduğu yere değiştirin

Şubeniz ve tüm yerel taahhütleriniz bozulmadan kalacaktır ve daha önce olduğu gibi çalışmaya devam edebilirsiniz.



3

To değiştirmek uzaktan kaynak tarafı: git remote set-url origin <url>


Daha fazla akış yukarı eklemek için : git remote add newplace <url>

Böylece nerede çalışacağınızı git push origin <branch>veyagit push newplace <branch>


1
Birden fazla yukarı akışta çalışmanın başka sözlerini bulamadım ..
Anderson Cossul

2

URL'yi yapılandırma dosyasını düzenleyerek değiştirebilirsiniz. Proje köküne gidin:

nano .git/config

Ardından URL alanını düzenleyin ve yeni URL'nizi ayarlayın. Değişiklikleri kaydedin. Komutu kullanarak değişiklikleri doğrulayabilirsiniz.

git remote -v 

1

Bu değişikliği Visual Studio 2019'dan yapmak isteyenler için

Takım Gezgini'ni aç (Ctrl + M)

Ana Sayfa -> Ayarlar

Git -> Depo Ayarları

Uzaktan kumandalar -> Düzenle

resim açıklamasını buraya girin


1

Deponuz özelse

  1. Başlat menüsünden Denetim Masası'nı açın
  2. Kullanıcı Hesaplarını Seçin
  3. Soldaki menüden "Kimlik bilgilerinizi yönetin" i seçin
  4. Git veya GitHub ile ilgili tüm bilgileri silin

Referans


1

ayrıcalığını kontrol et

benim durumumda kullanıcı adımı kontrol etmem gerekiyor

ayrı kimliklere sahip iki veya üç havuzum var.

sorun benim iznim var iki özel git sunucusu ve depolar

Bu ikinci hesap bu yeni repo yöneticisi ve ilki varsayılan kullanıcı hesabım ve ilk önce izin vermeliyim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.