2011-04-05 14 views
7

मुझे गिट शाखा में पिछले और अगले प्रतिबद्धता को तुरंत स्थानांतरित करने का एक तरीका चाहिए।गिट: पिछले और अगले प्रतिबद्धता पर जाएं

पिछले मैंने पाया कि मैं ऐसा कर सकता है:

git reset --hard HEAD~1

और शायद उर्फ ​​कि एक git prev या कुछ में, लेकिन मैं नहीं बाहर कैसे "ऊपर" अगले करने के लिए प्रतिबद्ध स्थानांतरित करने के लिए मिल सकता है ।

और आदर्श समाधान 2 उपनाम git prev और git next का उपयोग करेगा।

धन्यवाद

+3

'Git --hard प्रमुख रीसेट ~ 1' विनाशकारी है ; यह दूसरी सबसे हालिया प्रतिबद्धता के बाद सभी प्रतिबद्ध सामग्री को छोड़ देता है (उदाहरण के लिए, सबसे हालिया प्रतिबद्धता और सूचकांक और कार्यशील प्रतियों में कोई भी परिवर्तन)। 'गिट चेकआउट' वह आदेश है जिसका आपको उपयोग करना चाहिए। – gotgenes

+1

संभव डुप्लिकेट [गिट में एक प्रतिबद्धता के बच्चे को संदर्भित करना] (http://stackoverflow.com/questions/1761825/referencing-the-child-of-a-commit-in-git) –

+2

और आप क्या करना चाहते हैं ऐसा होता है यदि आप विलय प्रतिबद्ध (एकाधिक माता-पिता) में हैं, या एक प्रतिबद्धता में जो एकाधिक प्रतिबद्धताओं का अभिभावक है? एक गिट भंडार एक डीएजी की तरह है और शाखाएं इस ग्राफ में केवल पॉइंटर्स हैं, इसलिए जब तक आपके पास रैखिक इतिहास न हो, 'पिछला' और 'अगला' जरूरी नहीं है। – hammar

उत्तर

5

वहाँ Git द्वारा एक आसान उर्फ ​​सेटअप ORIG_HEAD कहा जाता है जो उपयोग किए गए अंतिम सिर का ट्रैक रखता है। तो जब आप एक गिट रीसेट करते हैं - हेड ~ 1 हेड के बारे में डेटा जिसे आपने अभी से रीसेट किया है, ORIG_HEAD में संग्रहीत है।

तो उर्फ ​​Git पिछला git करने के लिए रीसेट --hard HEAD ~ 1 (या HEAD^1) और उर्फ ​​Git Git के बगल में --hard ORIG_HEAD रीसेट

+6

यह लगभग यह करता है, समस्या यह है कि 'गिट अगली' दो बार –

+0

करने की कोशिश करते समय भी, आपके डेवलपर योगदान देने पर आपका "गिट पिछला" ठीक से काम नहीं करता है रेपो के लिए। यह एक ही डेवलपर द्वारा किए गए मौजूदा प्रतिबद्धता के लिए कूदता है। –