मैं एक Git स्थानीय और दूरस्थ शाखा नाम दोनों का नाम कैसे बदलूं?


458

मेरी गुरु की चार शाखाएँ हैं -> उत्पत्ति / प्रतिगमन, फ़ीचर -> मूल / फ़ीचर। जैसा कि आप देख सकते हैं, मैंने गलत नाम टाइप किया है।

इसलिए मैं एक दूरस्थ शाखा का नाम बदलना चाहता हूं (मूल / प्रतिगमन → मूल / विरासत या मूल / मास्टर)

मैं नीचे दिए गए आदेश की कोशिश करता हूं:

git remote rename regacy legacy

लेकिन Git कंसोल ने मुझे एक त्रुटि संदेश दिया।

 error : Could not rename config section 'remote.regacy' to 'remote.legacy'

इस समस्या का समाधान किस प्रकार से किया जा सकता है?




जवाबों:


810

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


इसे पूरा करने के कुछ तरीके हैं:

  1. अपनी स्थानीय शाखा बदलें और फिर अपने परिवर्तनों को आगे बढ़ाएँ
  2. मूल नाम को स्थानीय रूप से रखते हुए नए नाम के साथ शाखा को रिमोट पर पुश करें

स्थानीय और दूरस्थ का नाम बदलना

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

# Delete the old branch on remote - where <remote> is, for example, origin
git push <remote> --delete <old_name>

# Or shorter way to delete remote branch [:]
git push <remote> :<old_name>

# Push the new branch to remote
git push <remote> <new_name>

# Reset the upstream branch for the new_name local branch
git push <remote> -u <new_name>

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


केवल दूरस्थ शाखा का नामकरण

साभार : पीटीआईएम

# In this option, we will push the branch to the remote with the new name
# While keeping the local name as is
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

महत्वपूर्ण लेख:

जब आप git branch -mचाल (चाल) का उपयोग करते हैं , तो Git नए नाम के साथ आपकी ट्रैकिंग शाखा को भी अपडेट कर रहा है

git remote rename legacy legacy

git remote renameआपके कॉन्फ़िगरेशन फ़ाइल में अपने दूरस्थ अनुभाग को अपडेट करने का प्रयास कर रहा है। यह नए नाम को दिए गए नाम के साथ रिमोट का नाम बदल देगा, लेकिन आपके मामले में, इसे कोई भी नहीं मिला, इसलिए नाम बदलना विफल रहा।

लेकिन यह वह नहीं करेगा जो आप सोचते हैं; यह आपके स्थानीय कॉन्फ़िगरेशन को दूरस्थ नाम और दूरस्थ शाखा का नाम नहीं देगा । 


नोट Git सर्वर आपको वेब इंटरफ़ेस या बाहरी प्रोग्राम (जैसे Sourcetree, आदि) का उपयोग करके Git शाखाओं का नाम बदलने की अनुमति दे सकता है, लेकिन आपको यह ध्यान रखना होगा कि Git में सभी कार्य स्थानीय रूप से किए जाते हैं, इसलिए यह उपरोक्त आदेशों का उपयोग करने के लिए अनुशंसित है काम के लिए।


आपको अभी भी कुछ करने की ज़रूरत है, उपरोक्त के बाद और जब मैं खींचने की कोशिश करता हूं तो मुझे संदेश मिलता है:Your configuration specifies to merge with the ref ''refs/heads/old_name'
Krzysztof Kraso18

6
पुराने अपस्ट्रीम को अनसेट करना न भूलें:git checkout <new_name> ; git branch --unset-upstream
मिगुएल पिंग

2
@ मिगुएलपिंग की टिप्पणी महत्वपूर्ण है। जब मैं एक शाखा का नाम बदलने की कोशिश कर रहा हूं, तो मैंने पहले ही गिथब को हटा दिया, हटा दिया, स्थानीय का नाम बदल दिया, फिर से पुराने नाम में फिर से उपयोग किया जा रहा है। यदि मैं --unset-upstreamपुन: धक्का देने से पहले, यह इरादा के अनुसार काम करता है।
एडम टटल

1
क्या रिमोट पर पुराने नाम वाली शाखा पर खुले पीआरएस के स्वत: बंद होने से बचने का कोई तरीका है? यह गीतालाब में सामना किया गया था, जहां मूल की ओर धकेलने के बाद पुरानी शाखा के नाम पर पीआर को बंद कर दिया गया था।
हिमांशु तंवर

142

यदि आपने किसी शाखा को गलत नाम दिया है और इसे दूरस्थ रिपॉजिटरी में धकेल दिया है तो उस शाखा का नाम बदलने के लिए इन चरणों का पालन करें ( इस लेख के आधार पर ):

  1. अपनी स्थानीय शाखा का नाम बदलें:

    • यदि आप उस शाखा पर हैं जिसका आप नाम बदलना चाहते हैं:
      git branch -m new-name

    • यदि आप एक अलग शाखा पर हैं:
      git branch -m old-name new-name

  2. old-nameदूरस्थ शाखा हटाएं और new-nameस्थानीय शाखा को आगे बढ़ाएं :
    git push origin :old-name new-name

  3. नए नाम वाली स्थानीय शाखा के लिए अपस्ट्रीम शाखा को रीसेट करें :
    शाखा पर जाएँ और फिर:
    git push origin -u new-name


1
पहले 2 चरणों के बाद, यदि आपको दूरस्थ रेपो पर किसी गैर-अस्तित्व वाली शाखा को वर्तमान शाखा बिंदुओं के बारे में एक त्रुटि संदेश मिलता है, तो तीसरा चरण इसे ठीक करता है
केविन हुक

1
@ Dr1Ku एक शाखा को हटाने के लिए git push <remote> --delete old_nameऔर के बीच अंतर जानने की जरूरत है git push origin :old-name new-name
आशुतोष चमोली

BitBucket उपयोगकर्ता: चरण 2 पर त्रुटि को ठीक करें यदि नाम बदलकर master, रेपो विवरण में डिफ़ॉल्ट शाखा को नई शाखा में सेट करें। त्रुटि है:By default, deleting the current branch is denied, because the next 'git clone' won't result in any file checked out, causing confusion. You can set 'receive.denyDeleteCurrent' configuration variable to 'warn' or 'ignore' in the remote repository to allow deleting the current branch, with or without a warning message. To squelch this message, you can set it to 'refuse'. error: refusing to delete the current branch: refs/heads/master
कॉलिन

दूसरों के बीच सबसे आसान
अब्दुल्ला निलम

37

ऐसा लगता है कि एक सीधा रास्ता है:

यदि आप वास्तव में बस शाखाओं को फिर से नाम बदलना चाहते हैं (एक ही समय में किसी भी स्थानीय शाखाओं का नाम बदले बिना) तो आप इसे एक ही वाक्य के साथ कर सकते हैं जैसे

git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

Git में दूर से शाखाओं का नाम बदलना

अधिक विस्तार के लिए मूल उत्तर देखें।


1
Git में काम नहीं 2.20.1किया पुरानी शाखा को हटा दिया लेकिन नया नहीं बनाया गया था।
पॉल रज़वान बर्ग

26

इसे निम्न तरीके से भी किया जा सकता है।

पहले स्थानीय शाखा का नाम बदलें, फिर दूरस्थ शाखा।

स्थानीय शाखा का नाम बदलना:

यदि किसी अन्य शाखा में लॉग इन किया है,

git branch -m old_branch new_branch 

यदि एक ही शाखा में लॉग इन किया है,

git branch -m new_branch

दूरस्थ शाखा का नामकरण:

git push origin :old_branch    // Delete the remote branch

git push --set-upstream origin new_branch   // Create a new remote branch

5

यदि आपने पहले से ही गलत नाम को रिमोट में धकेल दिया है, तो निम्न कार्य करें:

  1. उस स्थानीय शाखा पर स्विच करें जिसका आप नाम बदलना चाहते हैं

    git checkout <old_name>

  2. स्थानीय शाखा का नाम बदलें

    git branch -m <new_name>

  3. <new_name>स्थानीय शाखा को पुश करें और अपस्ट्रीम शाखा को रीसेट करें

    git push origin -u <new_name>

  4. <old_name>दूरस्थ शाखा को हटाएँ

    git push origin --delete <old_name>

यह इस लेख पर आधारित था ।


4

अपनी वर्तमान शाखा (स्थानीय और मूल पर) का नाम बदलने के लिए एक सरल स्निपेट संलग्न करना :

git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>

गिट डॉक्स से स्पष्टीकरण :

git शाखा -m या -M विकल्प, का नाम बदला जाएगा। यदि इसी अनुलग्‍नक था, तो इसका नाम बदलकर मिलान किया जाता है, और शाखा के नामकरण को याद रखने के लिए एक परिशोधन प्रविष्टि बनाई जाती है। यदि मौजूद है, तो -नाम का उपयोग बलपूर्वक होने के लिए किया जाना चाहिए।

विशेष refspec: (या + गैर-फास्ट-फॉरवर्ड अपडेट की अनुमति देने के लिए) Git को "मिलान" शाखाओं को पुश करने का निर्देश देता है: स्थानीय शाखा पर मौजूद प्रत्येक शाखा के लिए, दूरस्थ पक्ष को अपडेट किया जाता है यदि उसी नाम की एक शाखा पहले से मौजूद है दूर की तरफ।

-सेट-अपस्ट्रीम सेट अप की ट्रैकिंग जानकारी तो अपस्ट्रीम शाखा माना जाता है। यदि कोई निर्दिष्ट नहीं है, तो यह वर्तमान शाखा में चूक करता है।


3

कोई प्रत्यक्ष विधि नहीं है,

  1. स्थानीय शाखा का नाम बदलें ,

    मेरी वर्तमान शाखा गुरु है

    git branch -m master_renamed # मास्टर_ नाम का नया नाम मास्टर है

  2. दूरस्थ शाखा हटाएं,

    git push origin --delete master #origin Remote_name है

  3. दूरस्थ में शाखा का नाम बदलें,

    git push origin master_renamed

बस...


अच्छा और सरल और केवल 3 चरण। केवल मैं जो सुझाव दे सकता हूं वह यह है git push -u origin master_renamedकि शाखा को ट्रैकिंग शाखा के रूप में सेट करना है
ut9081

2

यह तीन सरल चरणों में स्थानीय शाखा का नाम लिए बिना भी किया जा सकता है:

  1. GitHub में अपने भंडार पर जाएँ
  2. पुरानी शाखा से एक नई शाखा बनाएँ जिसका आप नाम बदलना चाहते हैं
  3. पुरानी शाखा को हटाएं

0

मैं इन git उपनामों का उपयोग करता हूं और यह कार्य को स्वचालित रूप से करता है:

git config --global alias.move '!git checkout master; git branch -m $1 $2; git status; git push --delete origin $1; git status; git push -u origin $2; git branch -a; exit;'

उपयोग: git चाल FROM_BRANCH TO_BRANCH

यह काम करता है यदि आपके पास मास्टर, मूल आदि जैसे डिफ़ॉल्ट नाम हैं तो आप अपनी इच्छानुसार संशोधित कर सकते हैं लेकिन यह आपको विचार देता है।


0

मुझे स्थानीय और दूरस्थ शाखा का नाम बदलने के लिए निम्न कार्य करना था:

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

#  Delete the old remote branch
git push origin --delete <old_name>

# push to new remote branch - creates new remote branch
git push origin <new_name>

# set new remote branch as default remote branch for local branch
git branch --set-upstream-to=origin/<new_name> <new_name>

यह मौजूदा जवाब से अलग कैसे है?
हिमांशु तंवर

0
  1. अपनी स्थानीय शाखा का नाम बदलें। यदि आप उस शाखा पर हैं जिसका आप नाम बदलना चाहते हैं:

    git शाखा -m नया-नाम

यदि आप एक अलग शाखा पर हैं:

git branch -m old-name new-name
  1. पुराने नाम की दूरस्थ शाखा हटाएं और नए नाम वाली स्थानीय शाखा को आगे बढ़ाएं।

    git पुश ओरिजिन: पुराना-नया नाम

  2. नए नाम वाली स्थानीय शाखा के लिए अपस्ट्रीम शाखा को रीसेट करें। शाखा पर जाएँ और फिर:

    git push मूल -u नया-नाम

सब तैयार!


0
  • अपनी स्थानीय शाखा का नाम बदलें

यदि आप उस शाखा पर हैं जिसका आप नाम बदलना चाहते हैं:

git branch -m new-name

यदि आप वर्तमान समय में एक अलग शाखा पर रहते हैं:

git branch -m old-name new-name
  • पुराने नाम की दूरस्थ शाखा हटाएं और नए नाम वाली स्थानीय शाखा को आगे बढ़ाएं।

लक्ष्य शाखा पर बने रहें और:

git push origin :old-name new-name
  • नए नाम वाली स्थानीय शाखा के लिए अपस्ट्रीम शाखा को रीसेट करें।

लक्ष्य शाखा पर जाएँ और फिर:

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