दूसरी शाखा से गिट में एक शाखा बनाएँ


989

मेरी दो शाखाएँ हैं: गुरु और देव

मैं देव शाखा से एक "सुविधा शाखा" बनाना चाहता हूं ।

वर्तमान में शाखा देव पर, मैं करता हूँ:

$ git checkout -b myfeature dev

... (कुछ काम)

$ git commit -am "blablabla"
$ git push origin myfeature

लेकिन, अपनी शाखाओं की कल्पना करने के बाद, मुझे मिल गया:

--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**

मेरा मतलब है कि शाखा ff विलय लगता है, और मुझे समझ नहीं आता क्यों ...

मैं क्या गलत कर रहा हूँ?

क्या आप मुझे समझा सकते हैं कि आप किसी अन्य शाखा से कैसे शाखा हटाते हैं और सुविधा शाखा के लिए दूरस्थ रिपॉजिटरी में वापस धक्का देते हैं?

यहाँ वर्णित की तरह एक शाखा मॉडल में सभी ।

जवाबों:


1431

यदि आपको आपके द्वारा पोस्ट किए गए लिंक में विधि पसंद है, तो Git Flow पर एक नज़र डालें ।

यह उस वर्कफ़्लो के लिए बनाई गई स्क्रिप्ट का एक सेट है।

लेकिन आपके सवाल का जवाब देने के लिए:

$ git checkout -b myFeature dev

MyFeature शाखा को देव बनाता है। अपना काम करो और फिर

$ git commit -am "Your message"

अब अपने बदलावों को तेजी से आगे बढ़ाए बिना देव में मिला दें

$ git checkout dev
$ git merge --no-ff myFeature

अब सर्वर में परिवर्तन धक्का

$ git push origin dev
$ git push origin myFeature

और आप इसे देखेंगे कि आप इसे कैसे चाहते हैं।


32
myFeatureविलय के बाद इसे धकेलने का क्या महत्व है dev?
अलेक्जेंडर सुरफेल

3
@spartacus यदि myFeatureविलय से पहले शाखा को सर्वर पर धकेल दिया गया था, तो कुछ भी नहीं। लेकिन अगर आपको myFeatureअभी तक सर्वर पर नहीं धकेला गया है और आप चाहते हैं कि यह सर्वर में दिखाई दे, तो आपको इसे आगे बढ़ाना होगा।
xOneca

13
है git checkout -b myFeature devइन 3 आदेशों के रूप में ही: git checkout devहै, तो git branch myFeature, और उसके बाद git checkout myFeature?
केविन मेरेडिथ 16

3
यह है, या यह होना चाहिए क्या आप कुछ अलग देख रहे हैं?
अबीझर्न


407

यदि आप Git में मौजूद किसी भी शाखा से एक नई शाखा बनाना चाहते हैं, तो बस विकल्पों का पालन करें।

जहाँ आप एक नई शाखा बनाना चाहते हैं, उस शाखा में पहले परिवर्तन / चेकआउट करें। उदाहरण के लिए, यदि आपके पास निम्नलिखित शाखाएँ हैं जैसे:

  • गुरुजी
  • देव
  • Branch1

तो तुम नामक एक नई शाखा बनाना चाहते हैं "subbranch_of_b1" नामित शाखा के अंतर्गत "Branch1" चरणों का पालन करें:

  1. चेकआउट करें या "शाखा 1" में बदलें

    git checkout branch1
    
  2. अब निम्नलिखित कमांड का उपयोग करके अपनी नई शाखा " ब्रांच 1 " के तहत "सबब्रांच_ऑफ_बी 1" बनाएं

    git checkout -b subbranch_of_b1 branch1
    

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

  3. अब subbranch_of_b1 के साथ काम करने के बाद आप इसे स्थानीय स्तर पर या दूर से पुश और मर्ज कर सकते हैं।

एक अन्य शाखा के तहत शाखाएँ बनाने का एक नमूना चित्रमय चित्रण

subbranch_of_b1 को दूरस्थ पर धकेलें

 git push origin subbranch_of_b1 

7
subbranch_of_b1 को रिमोट से कैसे पुश करें?
user269867

13
@ user269867: "git push origin subbranch_of_b1" आपके लिए यह काम करेगा।
प्रवीण जॉर्ज 4

4
अब, यदि मैं परिवर्तन को मास्टर में धकेलता हूँ, तो क्या यह शाखा 1 में स्वतः घटित होगा?
मास्टर योदा

2
ध्यान दें कि उपरोक्त कमांड में शाखा 1 अनिवार्य नहीं है क्योंकि HEAD वर्तमान में इसकी ओर इशारा कर रहा है, यदि आप एक अलग शाखा पर हैं तो आप इसे सटीक कर सकते हैं, हालांकि मैं यही देख रहा था
felipsmartins

10
मैं सोच रहा था कि अगर git checkout -b some-branchयह आशुलिपि है git checkout -b some-branch master। यह पता चला है कि के git checkout -b some-branchलिए आशुलिपि हैgit checkout -b some-branch <current_active_branch>
फ्रैंक हेनार्ड

45

एक शाखा बनाएँ

  • जब मास्टर शाखा की जाँच हो, तो शाखा बनाएँ। यहां आपके द्वारा बनाई गई शाखा के लिए मास्टर में कमिट किया जाएगा।

    $ git branch branch1

  • जब शाखा 1 की जाँच की जाती है तो शाखा बनाएँ। यहां ब्रांच 1 में आने वाले ब्रांच 2 को सिंक किए जाएंगे

    $ git branch branch2


एक शाखा की जाँच करें

git चेकआउट कमांड स्विच शाखाएं या कार्यशील ट्री फ़ाइलों को पुनर्स्थापित करें

  • $ git checkout branchname

शाखा का नाम बदलना

  • $ git branch -m branch1 newbranchname

एक शाखा हटाएँ

  • $ git branch -d branch-to-delete
  • $ git branch -D branch-to-delete ( बल विलोपन बिना मर्ज किए स्टेटस की जाँच के )

ब्रांच बनाएं और स्विच करें

  • $ git checkout -b branchname

शाखाएँ जो पूरी तरह से शामिल हैं

  • $ git branch --merged


************************** शाखा मतभेद [Git diff branch1..branch2] ************** **********

मल्टीलीन अंतर
  • $ git diff master..branch1
सिंगललाइन अंतर
  • $ git diff --color-words branch1..branch2

1
git push origin :old-name new-nameपुराने नाम की दूरस्थ शाखा को हटाने और नए नाम वाली स्थानीय शाखा को आगे बढ़ाने के लिए शाखा का नाम बदलने के बाद भी ।
95faf8e76605e973

13

एक साथ devशाखा पर काम करते हैं । क्या होता है कि आपके परिदृश्य में फीचर शाखा देव शाखा के सिरे से आगे बढ़ती है, लेकिन देव शाखा नहीं बदलती है। एक सीधी रेखा के रूप में खींचना आसान है, क्योंकि इसे आगे की गति के रूप में सोचा जा सकता है। आपने देव पर बिंदु A को बनाया, और वहां से आप बस एक समानांतर पथ पर चलते रहे। दो शाखाओं ने वास्तव में विचलन नहीं किया है।

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

*-----*Dev-------*Feature

बनाम

       /----*DevB
*-----*DevA
       \----*FeatureC

9

Git 2.23 परिचय git switchऔर git restoreकी जिम्मेदारियों को विभाजित करने के लिएgit checkout

2.23 के रूप में मौजूदा शाखा से एक नई शाखा बनाना:

git switch -c my-new-branch

एक नई शाखा 'मेरी-नई-शाखा' पर स्विच किया गया

  • -c के लिए कम है - बनाएँ और जाने-माने गिट चेक-बी की जगह

इस Github ब्लॉग पोस्ट पर एक नज़र डालिए जिसमें अधिक विस्तार से बदलावों के बारे में बताया गया है:

Git 2.23 मौजूदा लोगों के सुइट में प्रयोगात्मक कमांड की एक नई जोड़ी लाता है: git स्विच और git रिस्टोर । ये दोनों अंतत: जाने-माने गिट चेकआउट के लिए एक बेहतर इंटरफ़ेस प्रदान करने के लिए हैं। नई आज्ञाओं का उद्देश्य प्रत्येक के लिए एक स्पष्ट अलगाव है, बड़े करीने से गित चेकआउट की कई जिम्मेदारियां


9

अपने स्थानीय निर्देशिका में एक और शाखा से एक शाखा बनाने के लिए आप निम्नलिखित कमांड का उपयोग कर सकते हैं।

git checkout -b <sub-branch> branch

उदाहरण के लिए:

  • 'XYZ' बनाने वाली नई शाखा का नाम
  • ब्रांच एबीसी का नाम जिसके तहत XYZ बनाया जाना है
git checkout -b XYZ ABC

3

यदि आप किसी अन्य शाखा से एक शाखा बनाना चाहते हैं तो निम्न चरणों का पालन करें:

मान्यताओं :

  1. आप वर्तमान में मास्टर शाखा में हैं।
  2. आपके पास करने के लिए कोई परिवर्तन नहीं है। (यदि आपके पास करने के लिए कोई परिवर्तन है, तो इसे रोकें!)।
  3. BranchExistingशाखा का नाम है जिसमें से आपको नाम के साथ एक नई शाखा बनाने की आवश्यकता है BranchMyNew

चरण :

  1. अपनी स्थानीय मशीन पर शाखा लाएँ।

    $ git fetch origin BranchExisting : BranchExisting
    

यह कमांड आपके स्थानीय में एक ही शाखा नाम से एक नई शाखा बनाएगी।

  1. अब, मास्टर ब्रांच चेकआउट से लेकर नई ब्रांच तक

    $ git checkout BranchExisting
    
  2. अब आप BranchExisting में हैं। अब इस मौजूदा ब्रांच से एक नई ब्रांच बनाएं।

    $ git checkout -b BranchMyNew
    

हेयर यू गो!


1

किसी अन्य से एक शाखा बनाने के लिए इस वाक्यविन्यास का उपयोग कर सकते हैं:

git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>

यह "git चेकआउट -b" + "git पुश ओरिजिन" से थोड़ा छोटा है

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