दूरस्थ Git रिपॉजिटरी के लिए URI (URL) कैसे बदलें?


3889

मेरे पास USB कुंजी पर रेपो (उत्पत्ति) है जिसे मैंने अपनी हार्ड ड्राइव (स्थानीय) पर क्लोन किया है। मैं एक एनएएस में "मूल" चला गया और यहां से क्लोनिंग का सफलतापूर्वक परीक्षण किया।

मैं जानना चाहता हूं कि क्या मैं "स्थानीय" की सेटिंग में "मूल" के यूआरआई को बदल सकता हूं इसलिए यह अब एनएएस से खींचेगा, और यूएसबी कुंजी से नहीं।

अभी के लिए, मैं दो समाधान देख सकता हूं:

  • सब कुछ usb-orign पर धकेलें, और इसे NAS पर फिर से कॉपी करें (नव-उत्पत्ति के लिए नए काम के कारण बहुत काम का अर्थ है);

  • "स्थानीय" में एक नया रिमोट जोड़ें और पुराने को हटा दें (मुझे डर है कि मैं अपना इतिहास तोड़ दूंगा)।


6
मुझे यह पुराने संस्करण git (1.5.6.5) पर करना था और सेट-यूआरएल विकल्प मौजूद नहीं था। बस अवांछित रिमोट को हटाना और एक ही नाम के साथ एक नया जोड़ना समस्या के बिना काम किया और इतिहास को ठीक रखा।
हॉटन

मेरे मामले में मुझे अपनी अनुमति की जाँच करने की आवश्यकता है, मेरे पास दो निजी git रिपॉजिटरी हैं और यह दूसरा खाता उस नए रेपो का व्यवस्थापक है और पहला मेरा डिफ़ॉल्ट उपयोगकर्ता खाता है और मुझे पहले
saber tabatabaee yazdi को

जवाबों:


6322

आप ऐसा कर सकते हैं

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

(देखें git help remote) या आप केवल .git/configवहां के URL को संपादित और बदल सकते हैं। आप इतिहास को खो जब तक आप बहुत मूर्खतापूर्ण कुछ करने के किसी भी खतरे में नहीं कर रहे हैं (और यदि आप चिंतित हैं, बस अपने रेपो की एक प्रतिलिपि बनाने, के बाद से अपने रेपो है अपने इतिहास।)


29
यदि आपके पास एक अलग शेल उपयोगकर्ता है तो हो सकता है कि आप नए url की शुरुआत में अपने git उपयोगकर्ता को निर्दिष्ट करना चाहते हैं जैसे:myself@git://new.url.here
sobi3ch

13
तुम भी साथ अपने नए मूल स्थान के लिए मास्टर नदी के ऊपर शाखा सेट कर सकते हैं: git branch -u origin/master। यह आपको हर बार git pushहोने के बजाय बस करने की अनुमति देगा git push origin master
kelorek

32
@kelorek या आप बस git push -u origin masterपहली बार :)
hobbs

26
मुझे git remote set-url --push origin git://...मूल सेट करने के लिए भी आदेश देना पड़ा ... (धक्का) url।
जेपिलोरा

3
कई शाखाओं के लिए, आप git push -u --allसभी शाखाओं को एक ही बार में नए url पर धकेलने के लिए उपयोग कर सकते हैं (इसके बजाय git push -u origin master)
Ben

900
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 बदलना


100

बदलें एक Git मूल सर्वर के लिए होस्ट

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

उम्मीद है कि यह कुछ ऐसा करने की ज़रूरत नहीं है। सर्वर है कि मैं कुछ git परियोजनाओं पर सहयोग करने के लिए उपयोग कर रहा है के साथ डोमेन नाम की समय सीमा समाप्त हो गई थी। इसका मतलब था कि स्थानीय रिपॉजिटरी को वापस सिंक में लाने के लिए पलायन का रास्ता खोजना।

अपडेट: @mawolf को यह इंगित करने के लिए धन्यवाद कि हाल के गिट संस्करणों (पोस्ट फरवरी, 2010) के साथ एक आसान तरीका है:

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

विवरण के लिए मैन पेज देखें।

यदि आप पुराने संस्करण पर हैं, तो यह प्रयास करें:

एक चेतावनी के रूप में, यह केवल काम करता है क्योंकि यह एक ही सर्वर है, बस विभिन्न नामों के साथ।

यह मानते हुए कि नया होस्टनाम है 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) से सब कुछ क्रम में लगता है। और हाँ, मुझे पता है कि यह गिट इंटर्नल के साथ गड़बड़ करने का बुरा रूप है।


बुरा रूप का? शायद। लेकिन अगर आप की जरूरत है कुछ लेखकों उम्मीद नहीं थी ऐसा करने के लिए क्या कभी किसी ने तो कभी कभी internals के साथ खिलवाड़ की आवश्यकता है सब करने की ज़रूरत, होगा। लेकिन आपको इसके गलत होने पर परिणाम स्वीकार करने के लिए तैयार रहना होगा। Backup your local repository _before_ messing with git internals.
जेसी चिशोल्म

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

(वैकल्पिक रूप से, खोलें .git/config, देखें [remote "origin"]और url =पंक्ति को संपादित करें ।

आप जांच कर सकते हैं कि यह रीमोट की जांच करके काम कर रहा है:

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

अगली बार जब आप धक्का देंगे, तो आपको नई अपस्ट्रीम शाखा को निर्दिष्ट करना होगा, जैसे:

git push -u origin master

इन्हें भी देखें: GitHub: रिमोट का URL बदलना


मैं संपादन /। Config द्वारा नया मूल सेट नहीं कर सका। इसने कहा कि URL में git रिपॉजिटरी एक git रिपॉजिटरी नहीं थी। एक बार जब मैंने मूल को हटा दिया और फिर से बनाया, तो सब ठीक था। मैंने अपनी समस्या के समाधान के रूप में git रिमोट सेट-यूरल को नहीं देखा था, हालाँकि।
ऑक्टोपसग्राबस

git push -uकमांड के साथ पूर्ण उत्तर प्रदान करने के लिए +1 । शायद दूसरों के लिए स्पष्ट, मेरे लिए नहीं था।
वृषण

37

दूरस्थ URL स्विच करना

टर्मिनल खोलें।

Ist Step: - करंट वर्किंग डायरेक्टरी को अपने लोकल प्रोजेक्ट में बदलें।

दूसरा चरण: - जिस रिमोट को आप बदलना चाहते हैं उसका नाम पाने के लिए अपने मौजूदा रिमोट को सूचीबद्ध करें।

git remote -v

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

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

अपने दूरस्थ URL को HTTPS से SSH में git दूरस्थ सेट-url कमांड से बदलें।

तीसरा चरण: - git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

4th स्टेप: - अब सत्यापित करें कि दूरस्थ URL बदल गया है।

git remote -v नया दूरस्थ URL सत्यापित करें

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

क्या आपको नया मूल जोड़ने से पहले पुराने मूल को निकालना होगा?
स्लेज

मैंने प्रोजेक्ट से कुछ भी नहीं हटाया। मैं बस उपरोक्त चरणों को करता हूं और इसने काम किया
VIKAS KOHLI

27
  1. gitbash git दूरस्थ rm उत्पत्ति पर कमांड का उपयोग करके मूल निकालें
  2. और अब gitbash git रिमोट ऐड ओरिजिनल का उपयोग करके नया ओरिजिनल जोड़ें (प्रतिलिपि HTTP URL को अपने प्रोजेक्ट रिपॉजिटरी से बिट बाल्टी में कॉपी करें)

यह वास्तव में उपयोगी उत्तर है क्योंकि बिना git remote rm originजीट के पुराने मूल के बारे में विवरण याद है।
Mato

उपरोक्त git remote rm originकई रिमूव के मुद्दे को हल करता है: वह मुद्दा जहां मैं दूरस्थ यूआरएल सेट करने में सक्षम नहीं था। remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
बिट्संड


18

नीचे दिए गए कमांड को अपने रेपो टर्मिनल से लिखें:

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

दूरस्थ में यूआरएल बदलने के बारे में अधिक जानकारी के लिए इस लिंक को देखें ।


1
इससे मदद मिली। यह लिंक उपयोगी था
ANP

16

यदि आप अपने स्थानीय क्लोन स्वचालित रूप से शामिल होंगे,

दूरस्थ URL जहाँ इसे क्लोन किया जाता है।

आप इसका उपयोग करके देख सकते हैं git remote -v

अगर आप इसमें बदलाव करना चाहते हैं,

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

यहाँ,

मूल - आपकी शाखा

यदि आप मौजूदा शाखा को अधिलेखित करना चाहते हैं, तो आप अभी भी इसका उपयोग कर सकते हैं .. यह आपके मौजूदा को ओवरराइड करेगा ... यह करेगा

git remote remove url
and 
git remote add origin url

तुम्हारे लिए...


मेरे पास कई रिमूवर हैं, इसलिए git remote rm originसभी संबंधित url को हटाने के लिए कमांड की आवश्यकता थी। फिर ऐड कमांड ने काम किया।
बिट्संड

14

जीआईटी रिमोट कनेक्शन की जांच करने के लिए:

git remote -v

अब, स्थानीय रिपॉजिटरी को दूरस्थ git में सेट करें:

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

अब इसे अपस्ट्रीम या पुश कोड बनाने के लिए निम्नलिखित कोड का उपयोग करें:

git push --set-upstream origin master -f


1
मैं धक्का दे रहा था और फिर भी जीथब ने अपनी नई शाखा नहीं दिखाई। यह आखिरी --set-upstreamकाम कर गया।
OoDeLally

11

git@github.comइसके बजाय दूरस्थ गिट URI बदलेंhttps://github.com

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

उदाहरण:

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

लाभ यह है कि आप ssh- एजेंट का उपयोग करते समय git pushस्वचालित रूप से कर सकते हैं :

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

नीचे के रूप में उम्मीद का उपयोग कर $HOME/.ssh/agentइसे चलाने के लिए एक स्क्रिप्ट फ़ाइल रखो :ssh-add

#!/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 में, कमांड दर्ज करें:

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

क्रेडेंशियल दर्ज करें

किया हुआ



10

आपके पास ऐसा करने के बहुत सारे तरीके हैं:

कंसोल

git remote set-url origin [Here new url] 

बस यह सुनिश्चित करें कि आपने इसे एक ऐसी जगह पर खोला है जहाँ एक भंडार है।

कॉन्फ़िग

इसे .git / config (रिपॉजिटरी के समान फ़ोल्डर) में रखा गया है

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

TortoiseGit

चरण 1 - खुली सेटिंग्स

चरण 2 - यूआरएल बदलें

फिर बस URL संपादित करें।

SourceTree

  1. रिपॉजिटरी सेटिंग्स विंडो खोलने के लिए टूलबार पर "सेटिंग" बटन पर क्लिक करें।

  2. रिपॉजिटरी में दूरस्थ रिपॉजिटरी पथ जोड़ने के लिए "जोड़ें" पर क्लिक करें। एक "दूरस्थ विवरण" विंडो खुल जाएगी।

  3. दूरस्थ पथ के लिए एक नाम दर्ज करें।

  4. दूरस्थ रिपॉजिटरी के लिए URL / Path दर्ज करें

  5. दूरस्थ रिपॉजिटरी के लिए होस्टिंग सेवा के लिए उपयोगकर्ता नाम दर्ज करें।

  6. दूरस्थ पथ जोड़ने के लिए 'ठीक' पर क्लिक करें।

  7. रिपॉजिटरी सेटिंग्स विंडो पर वापस, 'ओके' पर क्लिक करें। नया दूरस्थ पथ अब रिपॉजिटरी पर जोड़ा जाना चाहिए।

  8. यदि आपको पहले से जोड़े गए दूरस्थ पथ को संपादित करने की आवश्यकता है, तो बस 'संपादित करें' बटन पर क्लिक करें। आपको "दूरस्थ विवरण" विंडो पर निर्देशित किया जाना चाहिए जहां आप दूरस्थ पथ के विवरण (URL / पथ / होस्ट प्रकार) को संपादित कर सकते हैं।

  9. दूरस्थ रिपॉजिटरी पथ को निकालने के लिए, 'निकालें' बटन पर क्लिक करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

संदर्भ। सहयोग


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
इक्कीस अन्य उत्तरों के साथ दस साल पुराने प्रश्न के उत्तर को जोड़ते समय अपने उत्तर की व्याख्या को शामिल करना और आपके उत्तर के प्रश्न के नए पहलू को इंगित करना वास्तव में महत्वपूर्ण है। उन उत्तरों के साथ, जो आदेशों की एक श्रृंखला है, यह व्याख्या करना उपयोगी है कि प्रत्येक क्या कर रहा है और यदि संभव हो तो उनमें से प्रत्येक के प्रभावों को कैसे पूर्ववत करें। यदि कोई व्यक्ति पहले कुछ चरणों को करने में सक्षम है, तो पूर्ववत करना महत्वपूर्ण है, लेकिन बाद में एक कदम पर एक त्रुटि का सामना करता है।
जेसन एलर

@ जैसनऑलर मुझे लगता है कि यह काफी आत्म-व्याख्यात्मक है और यह अब तक का सबसे अच्छा जवाब है, अन्य एक मजाक है।
ओलिवर डिक्सन

7

यदि आप TortoiseGit का उपयोग कर रहे हैं तो नीचे दिए गए चरणों का पालन करें:

  1. अपने स्थानीय चेकआउट फ़ोल्डर में जाएं और जाने के लिए राइट क्लिक करें TortoiseGit -> Settings
  2. बाएं फलक में चुनें Git -> Remote
  3. दाएँ फलक में चुनें origin
  4. अब URLटेक्स्ट बॉक्स वैल्यू को बदल दें जहां कभी आपका नया रिमोट रिपॉजिटरी है

आपकी शाखा और आपके सभी स्थानीय आवागमन बरकरार रहेंगे और आप पहले की तरह काम कर सकते हैं।


6

यहां छवि विवरण दर्ज करें

समस्या निवारण :

रिमोट को बदलने का प्रयास करने पर आपको इन त्रुटियों का सामना करना पड़ सकता है। ऐसा कोई रिमोट '[नाम]' नहीं

इस त्रुटि का मतलब है कि जिस रिमोट को आपने बदलने की कोशिश की है, वह मौजूद नहीं है:

git Remote set-url sofake https://github.com/octocat/Spoon-Kifeife घातक: ऐसा कोई रिमोट 'सोफ़ेक' नहीं

जांचें कि आपने सही तरीके से रिमोट नाम टाइप किया है।

संदर्भ: https://help.github.com/articles/changing-a-remote-s-url/


3

दूरस्थ अपस्ट्रीम को बदलने के लिए: git remote set-url origin <url>


अधिक अपस्ट्रीम जोड़ने के लिए : git remote add newplace <url>

तो आप चुन सकते हैं कि कहां काम करना है git push origin <branch>याgit push newplace <branch>


1
मैं कई अपस्ट्रीम में काम करने के अन्य उल्लेख नहीं पा सका ..
एंडरसन कोसूल

2

आप config फ़ाइल को संपादित करके url को बदल सकते हैं। अपने प्रोजेक्ट रूट पर जाएं:

nano .git/config

फिर url फ़ील्ड को संपादित करें और अपना नया url सेट करें। परिवर्तनों को सुरक्षित करें। आप कमांड का उपयोग करके परिवर्तनों को सत्यापित कर सकते हैं।

git remote -v 

1

जो लोग विजुअल स्टूडियो 2019 से यह बदलाव करना चाहते हैं

टीम एक्सप्लोरर खोलें (Ctrl + M)

घर -> सेटिंग्स

Git -> रिपोजिटरी सेटिंग्स

उपाय -> संपादित करें

यहां छवि विवरण दर्ज करें


1

यदि आपका भंडार निजी है

  1. स्टार्ट मेनू से कंट्रोल पैनल खोलें
  2. उपयोगकर्ता खाते का चयन करें
  3. बाएं हाथ मेनू में "अपने क्रेडेंशियल्स प्रबंधित करें" चुनें
  4. Git या GitHub से संबंधित किसी भी क्रेडेंशियल्स को हटा दें

संदर्भ


1

अपने विशेषाधिकार की जाँच करें

मेरे मामले में मुझे अपने उपयोगकर्ता नाम की जाँच करने की आवश्यकता है

मेरे पास सेपरेट क्रेडेंशियल्स के साथ दो या तीन रिपॉजिटरी हैं।

समस्या मेरी अनुमति है मेरे पास दो निजी git सर्वर और रिपॉजिटरी हैं

यह दूसरा खाता उस नए रेपो का व्यवस्थापक है और पहला मेरा डिफ़ॉल्ट उपयोगकर्ता खाता है और मुझे पहले अनुमति देनी चाहिए

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.