2010-12-30 11 views
10

मेरे पास एक भंडार है जहां मैं master शाखा पर काम कर रहा था, जिसमें आखिरी बार कुछ 10 या उससे भी कम काम किया गया था, जो अब मैं चाहता हूं कि मैं अब एक और शाखा में रहूं, क्योंकि वे अब जो काम देखते हैं उसका वर्णन करते हैं (मैं अभी भी अच्छी गिट प्रैक्टिस सीख रहा हूं) । असल में मैं इन अंतिम 10 कामों को अपनी शाखा बनाने के लिए master में एक बिंदु से शुरू करना चाहता हूं, ताकि मेरे पास केवल "रिलीज"/"स्थिर" प्रकार के लिए master हो।गिट: मास्टर के लिए बनाई गई अंतिम एन प्रतिबद्धताओं को अपनी शाखा में कैसे स्थानांतरित करें?

क्या मैं अब है, सबसे दायीं ओर X अंतिम रिलीज के लिए वास्तव में अच्छा प्रतिबद्ध है:

 b--b (feature B) 
    /  
X--X--X--Z--Z--Z--Z--Z--Z (master) 
    \ 
    a--a--a (feature A) 

आपको लगता है कि दोनों X और Z, मास्टर पर हैं कि मैं क्या चाहता हूँ Z द्वारा चिह्नित करता है, जबकि देख सकते हैं (मेरे "फीचर जेड" काम) अपनी खुद की फीचर शाखा पर झूठ बोलने के लिए, तो master is at the rightmost एक्स` की नोक।

 b--b (feature B) 
    /  
X--X--X (master) 
    \ \ 
    \ Z--Z--Z--Z--Z--Z (feature Z - the new branch I want) 
     \ 
     a--a--a (feature A) 

इस तरह के रूप में की जरूरत है मैं अपने master गुणवत्ता सामान के लिए आरक्षित, ए, बी में विलय और जेड सुविधाएं होंगी: वांछित ग्राफ इसे समझने के लिए।

तो मैं अपनी खुद की शाखा में "Z" को कैसे स्थानांतरित करूं?

+0

के संभावित डुप्लिकेट [ले जाएँ एक शाखा का उपयोग कर Git पर गुरु से करता है] (http: // stackoverflow .com/प्रश्न/37 1 9 6868/चाल-काम-से-मास्टर-ऑन-ए-शाखा-उपयोग-गीट) –

उत्तर

12
git checkout master 
git branch feature-Z 
git reset <commit_id> 

जहां प्रतिबद्ध_आईडी बी शाखाओं से पहले उस अंतिम एक्स प्रतिबद्धता का पहचानकर्ता है।

+7

शायद आप 'गिट रीसेट - हार्ड' चाहते हैं। और यदि कोई संशोधन किया गया है जिसमें चेक-इन नहीं किया गया है, तो इसके पहले 'गिट स्टैश' में फेंक दें और इसके बाद 'गिट स्टैश पॉप' फेंक दें। –

+0

सहमत, मूल रूप से। चूंकि उन्होंने काम करने वाले पेड़ की स्थिति शुरू करने/काम करने के बारे में कुछ भी नहीं कहा/अनुरोध नहीं किया, इसलिए मैंने न्यूनतम टाइपिंग समाधान में फेंक दिया जो उसने पूछा था। ऐसा लगता है कि वह खुद के विवरण के साथ आने के लिए पर्याप्त गिट जानता है। मैंने आपकी टिप्पणी को उन लोगों के लिए दृश्यमान रखने में मदद के लिए उठाया जो नहीं चाहते थे। –

2

सीधे शब्दों में मास्टर का नाम बदलने और पिछले एक्स पर एक नया मास्टर शुरू:

git checkout master; git branch -m feature; git checkout -b master HEAD~6

+0

आपके प्रस्ताव में एक दोष यह है कि अब सुविधा मूल/मास्टर को ट्रैक कर रही है। –

5

पूर्णता के लिए, इस सवाल का जवाब यहाँ है - http://git-scm.com/docs/git-reset - पाठ के लिए खोज "एक प्रतिबद्ध पूर्ववत करें, यह एक विषय शाखा कर रही है "- उदाहरण पिछले 3 बनाने शो करता है एक शाखा और मास्टर को रीसेट उन 3 प्रतिबद्ध करने के लिए पिछले प्रतिबद्ध:

$ git status 
# On branch master 
# Your branch is ahead of 'origin/master' by 3 commits. 
# 
nothing to commit (working directory clean) 
$ git branch topic/wip 
$ git reset --hard HEAD~3 
$ git checkout topic/wip 
Switched to branch topic/wip 
+0

कर्नेल.org लिंक 404 के बाद से चला गया है, लेकिन 'मैन गिट-रीबेस' आपके गिट के संस्करण के लिए नवीनतम प्रदान करेगा। –

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