2011-09-28 12 views
30

पर सेट शाखाएं मेरी परियोजनाओं में submodules के उपयोग के कारण मैं अक्सर "(कोई शाखा नहीं) पर खुद को ढूंढ रहा हूं। चूंकि मैं उन submodules में कोड भी जोड़ रहा हूं, मैं वहां पर काम कर रहा हूं। जब मैं उन submodules को धक्का देना चाहता हूं मुझे निश्चित रूप से एक शाखा में होना चाहिए। इसलिए मेरे सवाल:गिट: मौजूदा रेफरी

वहाँ Git (कमांड लाइन) में एक तरह से/शॉर्टकट है

git checkout the_branch 
git reset --hard <previous commit-ish> 

के चक्कर बिना वर्तमान प्रतिबद्ध/सिर के लिए एक स्थानीय शाखा स्थापित करने के लिए और अधिक सटीक होना, मेरा असली समस्या उपरोक्त "चक्कर" के साथ यह है कि मैं अस्थायी रूप से चेकआउट-कमांड के साथ मूल सिर छोड़ रहा हूं। यह git branch -f कमांड से बच सकता है (चार्ल्सबी के लिए धन्यवाद)।

उत्तर

39

-B के साथ शाखा चेकआउट करें: यह शाखा को हेड में रीसेट कर देगा, जो वर्तमान रेफरी है।

git checkout -B <branch> 

से docs:

तो -B दिया जाता है, अगर यह मौजूद नहीं है बनाई गई है; अन्यथा, यह रीसेट हो गया है। यह

$ git branch -f <branch> [<start point>] 
$ git checkout <branch> 

के लेन-देन संबंधी बराबर कहने के लिए, शाखा रीसेट नहीं है/बनाया जब तक "Git चेकआउट" सफल हुआ है।

+3

अब मुझे "शाखा-एफ" कमांड का एहसास है जो मैं ढूंढ रहा हूं, क्योंकि मेरी असली समस्या यह है कि मैं उस प्रतिबद्धता को "छोड़ना" नहीं चाहता हूं जिस पर मैं वर्तमान में बैठा हूं। धन्यवाद। –

+1

आधिकारिक दस्तावेज़ीकरण से लिंक: https://git-scm.com/docs/git-checkout#git-checkout-emgitcheckoutem-b-Bltnewbranchgtltstartpointgt –

16
git checkout -B the_branch HEAD 

इस चेकआउट the_branch पर प्रमुख प्रतिबद्ध है, भले ही the_branch कहीं और से पहले इशारा किया। यह पिछले कुछ गिट रिलीज़ में से एक में जोड़ा गया था, इसलिए हो सकता है कि आप इसे उपलब्ध न करें। एक वैकल्पिक मार्ग git branch -D the_branch && git checkout -b the_branch

+0

मैं गिट संस्करण 1.7.0.4 का उपयोग कर रहा हूं और चेकआउट -बी अभी तक मौजूद नहीं है। लेकिन यह देखना अच्छा लगता है कि यह भविष्य में होगा। –

संबंधित मुद्दे