GitHub में एक शाखा का नाम बदलना


296

मैंने सिर्फ अपनी स्थानीय शाखा का नाम बदला

git branch -m oldname newname

लेकिन यह केवल शाखा के स्थानीय संस्करण का नाम बदल देता है। मैं GitHub पर एक का नाम कैसे बदल सकता हूं?



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

12
@evanmcdonnal नहीं, आप GitHub साइट से Git शाखा का नाम नहीं बदल सकते।
एंड्रयू मार्शल

इस प्रश्न के उत्तर लगभग सार्वभौमिक रूप से गलत हैं। सवाल यह नहीं है कि गिट शाखा का नाम कैसे बदला जाए, यह गीथुब शाखा का नाम कैसे बदला जाए । जीथुब पर कई चीजें एक शाखा से बंधी हैं, जिसका मतलब है कि किसी भी उत्तर को उन चीजों को कवर करने की आवश्यकता है। उदाहरण का नाम बदलने के लिए मास्टर करने के लिए मुख्य
GMAN

@gman इसके लायक क्या है, ऐसा लगता है कि ये जवाब ओपी के सवाल की भावना का जवाब देते हैं। तकनीकी रूप से सटीक दृष्टिकोण या वर्तमान में आप जिस समस्या को देख रहे हैं, उससे ओपी का प्रश्न पूरी तरह से विकृत नहीं हो सकता है। लेकिन फिर, यह सवाल या तो गिट या गिटहब की गहरी तकनीकी पृष्ठभूमि से नहीं आ रहा है। इस दृष्टिकोण से, कोई इसे "शुरुआती" या प्रारंभिक प्रश्न मान सकता है। जैसे, यह इस दर्शकों के लिए उपयुक्त है, और उत्तर दिया गया है। निराशा, निश्चित, लेकिन मुझे लगता है कि यह क्यू, ये उत्तर उपयुक्त / प्रासंगिक हैं, पूर्व BLM गिट / हब उपयोग Q के लिए।
शेरलहोमन

जवाबों:


309

जैसा कि उल्लेख किया गया है, गितुब और फिर से पुश पर पुराने को हटा दें, हालांकि उपयोग किए जाने वाले कमांड आवश्यक से कुछ अधिक क्रिया हैं:

git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local

सरल। आदेशों को थोड़ा सा हटाते हुए, जिट पुश कमांड अनिवार्य रूप से है:

git push <remote> <local_branch>:<remote_branch>

इसलिए बिना किसी स्थानीय_ब्रांच के एक धक्का देने का अनिवार्य रूप से अर्थ है "मेरे स्थानीय भंडार से कुछ भी नहीं लेना, और इसे दूरस्थ शाखा बनाना"। मैंने हमेशा सोचा है कि यह पूरी तरह से कठिन है, लेकिन यह जिस तरह से किया गया है।

संपादित करें: Git 1.7 के रूप में दूरस्थ शाखा को हटाने के लिए एक वैकल्पिक वाक्यविन्यास है:

git push origin --delete name_of_the_remote_branch

संपादित करें: जैसा कि टिप्पणियों में @ void.pointer द्वारा उल्लेख किया गया है

ध्यान दें कि आप 2 पुश ऑपरेशन को संयोजित कर सकते हैं:

git push origin :old_branch new_branch

यह दोनों पुरानी शाखा को हटा देगा और नए को धक्का देगा।

इसे एक साधारण उपनाम में बदल दिया जा सकता है, जो तर्क के रूप में दूरस्थ, मूल शाखा और नई शाखा का नाम लेता है ~/.gitconfig:

[alias]
    branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"

उपयोग:

git branchm origin old_branch new_branch

ध्यान दें कि शेल कमांड में स्थिति संबंधी तर्क पुराने (पूर्व 2.8?) संस्करणों में समस्याग्रस्त थे, इसलिए उपनाम संस्करण के संस्करण के अनुसार भिन्न हो सकते हैं। देखें इस चर्चा जानकारी के लिए।


32
ध्यान दें कि आप 2 पुश ऑपरेशन को जोड़ सकते हैं git push origin :old_branch new_branch:। यह दोनों पुरानी शाखा को हटा देगा और नए को धक्का देगा।
void.pointer

4
क्या कोई कारण है कि पुरानी को हटाने से पहले नई शाखा को धक्का नहीं दिया जा सकता है? मैं व्यक्तिगत रूप से उन प्रक्रियाओं को पसंद करता हूं जहां निर्माण कार्य सफल होने के बाद डिलीट ऑपरेशन होता है, बस अगर कुछ गलत हो जाता है।
jmort253

7
काम नहीं करता। यह सिर्फ़ अपने पुराने नाम के साथ गीथूब पर शाखा वापस रख देगा।
जियॉफ

1
@AdamParkin 1. git branch -m new_branch( पुराने_ब्रांच का नाम बदलकर new_branch) 2. git commit -m 'msg', 3. 3. git pushMhmm, old_branch Github, Google प्रश्न में दिखाता है और मैं आपके उत्तर के लिए नेतृत्व कर रहा हूं 5. git push origin :old_branch(कहते हैं कि यह हटा दिया गया है 6.) git push origin new_branch: पूर्ण ... तब कहते हैं * [new branch] new_branch -> old_branch। गितुब वापस जाओ और फिर से दिखाओ old_branch। अगर मैं जीथब वेब यूआई में हटाता हूं, तो मेरे पास "रिस्टोर" करने का विकल्प है, इसलिए ऐसा लगता है कि new_branch को धक्का देना अभी बहाल है।
केविन

2
एक बात का ध्यान रखें कि जब आप शाखा का नाम बदलते हैं, तो आपके द्वारा उस पुल अनुरोध के खिलाफ आपके द्वारा खोले गए किसी भी अनुरोध को स्वचालित रूप से बंद कर दिया जाएगा। हमें शाखा को फिर से नाम बदलना पड़ा और फिर से सभी पुल अनुरोधों को मैन्युअल रूप से फिर से खोलना
पड़ा

24

निम्नलिखित आदेशों ने मेरे लिए काम किया:

git push origin :old-name-of-branch-on-github
git branch -m old-name-of-branch-on-github new-name-for-branch-you-want
git push origin new-name-for-branch-you-want

यह संक्षिप्त उत्तर है जो काम करता है। BTW, पहले कमांड को भी जवाब में पिछले एक के रूप में रखा जा सकता है।
एरिक वांग

यह उत्तर git नहीं
gitub

1
दरअसल, मैंने ऐसा सिर्फ दो बार किया था और इसने जीथब पर काम किया।
spozun

17

मुझे 3 कमांड मिली हैं कि आप अपने git ब्रांच का नाम कैसे बदल सकते हैं, और ये कमांड ऐसा करने का तेज़ तरीका है

git branch -m old_branch new_branch         # Rename branch locally    
git push origin :old_branch                 # Delete the old branch    
git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

यदि आपको चरण-दर-चरण की आवश्यकता है तो आप इस महान लेख को पढ़ सकते हैं

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


1
git push --set-upstreamयदि आप दूरस्थ शाखा को हटाने से पहले github ऐप का उपयोग करके स्थानीय रूप से शाखा का नाम बदलने के लिए होते हैं, तो यह सबसे महत्वपूर्ण हिस्सा है।
लुइस यांग

यह उत्तर git नहीं
gitub

12

बस पुरानी शाखा को हटा दें और नया बनाएं।

उदाहरण (केवल दूरस्थ शाखा का नाम बदलकर):

git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname

आपको संभवतः स्थानीय शाखा का नाम बदलना चाहिए और सेटिंग्स को बदलना चाहिए जहां धक्का / खींचने के लिए।


1
दूसरा आदेश नहीं होना चाहिए git push origin newname:refs/heads/newname? मास्टर और newname समान कमिट की ओर इशारा नहीं करते हैं।
स्टीव फ़ॉली

"मास्टर" सिर्फ उदाहरण के रूप में है, अब बदल जाएगा।
वि।

हो सकता है कि दो आदेशों का क्रम उलट जाए (यानी पहले नया नाम अपलोड करें, उसके बाद पुराना हटा दें)
वीआई।

यह उत्तर
gitub

@gman, इसका नामकरण नहीं कर रहा है Git- वार भी इसका नाम बदलकर Github-wise है?
वि।

9

लोकल और रिमोट में शाखाओं का नाम बदलें

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

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

git branch -m new-name

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

git branch -m old-name new-name

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

git push origin :old-name new-name

3. नए नाम वाली स्थानीय शाखा के लिए अपस्ट्रीम शाखा को रीसेट करें।

शाखा पर जाएँ और फिर:

git push origin -u new-name

तो निष्कर्ष है

git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name

यह उत्तर
gitub

यह git के लिए है और GitHub git के अंतर्गत है इसलिए यह काम करेगा और यह मेरे और अन्य लोगों के साथ काम करता है
अब्देलरहमान मोहम्मद

यह काम नहीं करता है। पहले और दूसरे चरण का प्रयास करें git branch -m new-name && git push origin :master new-name। यह विफल हो जाएगा। यदि यह उत्तर केवल गिट के बारे में है और जीथब के बारे में नहीं है तो यह प्रश्न कई अन्य प्रश्नों का एक डुप्लिकेट है और इसे बंद किया जाना चाहिए। यदि यह वास्तव में जीथूब के बारे में है तो उत्तर को जीथब को कवर करना होगा। यह उत्तर नहीं है।
gman

6

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

https://github.com/blog/1377-create-and-delete-branches


2

यहाँ मेरे लिए क्या काम किया गया है:

1.) नई शाखा पहले बनाएं: git push github newname: refs / heads / newname

2.) github साइट पर, गोटो सेटिंग और डिफ़ॉल्ट ब्रांच को newname में बदलें

3.) पुरानेनाम को हटा दें git push github --delete oldname


0
  1. डाउनलोड एटलसियन सोर्सट्री (मुफ्त)।
  2. रिपॉजिटरी के अपने स्थानीय क्लोन को आयात करें।
  3. साइडबार में नाम बदलने के लिए अपनी शाखा पर राइट क्लिक करें। संदर्भ मेनू से "शाखा का नाम बदलें ..." का चयन करें और उसका नाम बदलें।
  4. उत्पत्ति के लिए धक्का।

धन्यवाद, लेकिन मुझे इसे आयात करने के साथ ही शाखा में जाना पड़ा।
फ्लैश शेरिडन

1
यह उत्तर
gitub

0

यह आलेख दिखाता है कि इसे वास्तविक रूप से कैसे किया जाए।
1. एक स्थानीय Git शाखा का नाम बदलने के लिए, हम नाम को संशोधित करने के लिए Git शाखा -m कमांड का उपयोग कर सकते हैं:
git branch -m feature1 feature2
2. यदि आप केवल दूरस्थ Git शाखा का नाम बदलने के लिए कमांड की तलाश कर रहे हैं, तो यह है "यह
git push -u origin feature2:feature3
जांचें कि आपके पास कोई नहीं है ऐसा करने से पहले शाखा पर टैग। आप ऐसा कर सकते हैं git tag


यह उत्तर
gitub

0

एक अन्य तरीका निम्नलिखित फाइलों का नाम बदलना है :

  1. अपनी परियोजना निर्देशिका नेविगेट करें
  2. का नाम बदल .git/refs/head/[branch-name]दिया.git/refs/head/new-branch-name
  3. का नाम बदल .git/refs/remotes/[all-remote-names]/[branch-name]दिया.git/refs/remotes/[all-remote-names]/new-branch-name

अपने स्थानीय पीसी पर और मूल (ओं) / रिमोट सर्वर ( दोनों) पर नाम बदलें और हटाएं

शाखा का अब नाम बदला गया है (स्थानीय और दूरस्थ!)


ध्यान

यदि आपके वर्तमान शाखा-नाम में स्लैश हैं (/ ) git निर्देशिकाओं को इस तरह बनाएगा:

वर्तमान शाखा-नाम: "awe/some/branch"

  • .git/refs/head/awe/some/branch
  • .git/refs/remotes/[all-remote-names]/awe/some/branch

काश शाखा-नाम: "new-branch-name"

  1. अपनी परियोजना निर्देशिका नेविगेट करें
  2. कॉपी करें branch फाइल.git/refs/*/awe/some/
  3. अंदर डाल दो .git/refs/head/
  4. कॉपी करें branchफ़ाइल को सभी से.git/refs/remotes/*/awe/some/
  5. उन्हें अंदर रखो .git/refs/remotes/*/
  6. सभी opied branchफ़ाइलों का नाम बदलेंnew-branch-name
  7. जाँच करें कि क्या निर्देशिका और फ़ाइल संरचना अब इस तरह दिखती है:
    • .git/refs/head/new-branch-name
    • .git/refs/remotes/[all-remote-names]/new-branch-name
  8. अपने सभी दूरस्थ मूल / सर्वर पर एक ही करें (यदि मौजूद है)
    • जानकारी : रिमोट-सर्वर पर आमतौर पर कोई रिफ्यूज / रिमूव / * डायरेक्टरी नहीं होती है क्योंकि आप पहले से ही रिमोट-सर्वर पर होते हैं;) (अच्छी तरह से उन्नत गिट कॉन्फ़िगरेशन में यह संभव हो सकता है, लेकिन मैंने ऐसा कभी नहीं देखा है)

शाखा का अब नाम बदलकर (स्थानीय और दूरस्थ awe/some/branchकर दिया गया है new-branch-name)

शाखा-नाम में निर्देशिकाएँ हटा दिए गए।


जानकारी: यह तरीका सबसे अच्छा नहीं हो सकता है, लेकिन यह अभी भी उन लोगों के लिए काम करता है जिन्हें अन्य तरीकों से समस्या हो सकती है


यह उत्तर
gitub

0

मेरे मामले में, मुझे अपनी नामांकित शाखा को आगे बढ़ाने के लिए एक अतिरिक्त कमांड की आवश्यकता थी ।
git branch --unset-upstream
origin newname

(टाइपिंग में आसानी के लिए), मैं पहले git checkout oldname
फिर निम्नलिखित को चलाएँ:

git branch -m newname
git push origin :oldname या याgit push origin --delete oldname
git branch --unset-upstream
git push -u origin newname git push origin newname

यह अतिरिक्त कदम केवल आवश्यक हो सकता है क्योंकि मैं (ब्रांच से) अपनी शाखाओं पर रिमोट ट्रैकिंग सेटअप करता हूं । इस तरह जब मैंने जांच की है, तो मुझे बाद में केवल इसके बजाय टाइप की आवश्यकता हैgit push -u origin oldnameoldnamegit pushgit push origin oldname

अगर मैं पहले कमांड का उपयोग नहीं करता हूं , तो git फिर से बनाता है और पुश करता है - अपने इरादे को हराते हुए।git branch --unset-upstreamgit push origin newbranch oldbranchnewbranchorigin oldbranch


यह उत्तर
gitub

@gman प्वाइंट लिया। मेरा समाधान GitHub पर एक शाखा का नाम बदलने के लिए स्थानीय रूप से gitHub रिपॉजिटरी की स्थानीय गिट कॉपी पर नाम बदलने के बाद स्थानीय रूप से उपयोग करता है। तो शायद इसे एक विशेष समाधान माना जा सकता है, जब आप GitHub वेबसाइट इंटरफ़ेस के बजाय कमांड लाइन का उपयोग करना चाहते हैं, और आपके पास एक स्थानीय क्लोन है जिसे आप भी अपडेट करना चाहेंगे। इस अंतर को उजागर करने के लिए धन्यवाद, और यह स्पष्ट करना कि यह उत्तर एक सामान्य मामले के बजाय एक विशेष मामले के लिए है।
शेरलहोमन

समस्या यह है कि जीथुब शाखाओं की विशेषताओं को दर्शाता है। मुख्य का नाम बदलने का प्रयास करें और आपके निर्देश विफल हो जाएंगे।
gman

-1

निम्नलिखित आदेश स्थानीय रूप से शाखा का नाम बदल देते हैं, दूरस्थ स्थान पर पुरानी शाखा को हटाते हैं और नई शाखा को धक्का देते हैं, जिससे स्थानीय शाखा नई शाखा को ट्रैक करती है:

git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch

यद्यपि आपका कोड स्निपेट समस्या को हल कर सकता है, आपको यह वर्णन करना चाहिए कि आपके कोड का उद्देश्य क्या है (यह समस्या को कैसे हल करता है)। इसके अलावा, आप stackoverflow.com/help/how-to-answer
Ahmad F

यह उत्तर
gitub

-1

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

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

स्पष्टीकरण:

  1. नाम बदलें:

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

  2. चरण हटाएं:

    Git Reference: git पुश ओरिजिन: प्रायोगिक एक रेफरी ढूंढें जो मूल रिपॉजिटरी (उदाहरण के लिए refs / heads / प्रयोगात्मक) में प्रयोगात्मक से मेल खाती है, और इसे हटा दें।

  3. रिमोट रेपो स्टेप पर अपडेट करें (ट्रैकिंग के लिए अपस्ट्रीम संदर्भ):

    Git reference: --set-upstream प्रत्येक शाखा के लिए जो अप टू डेट है या सफलतापूर्वक पुश किया गया है, अपस्ट्रीम (ट्रैकिंग) संदर्भ जोड़ते हैं, जिसका उपयोग तर्क-कम गिट-पुल [1] और अन्य कमांड द्वारा किया जाता है। अधिक जानकारी के लिए, git-config [1] में शाखा देखें।


यह उत्तर
gitub


-1

Git ब्रांच रन git ब्रांच -m old_name new_name यह आपके स्थानीय रेपो git पुश ओरिजिन पर ब्रांच नाम को संशोधित करेगा: old_name new_name यह संशोधित नाम को रिमोट में धकेल देगा और पुरानी ब्रांच git पुश ओरिजिन-डिलीट new -name हटा देगा। दूरस्थ शाखा। यह समस्या को हल करता है


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