2012-01-03 8 views
5

यहाँ http://blog.prabir.me/post/Undo-in-Git.aspx से, यहगिट पुश के बाद मैं गिट प्रतिबद्ध कैसे कर सकता हूं?

This undo’s your commit and also resets your working tree to the last commit. 

1 git reset --hard HEAD^ 

कहा लेकिन यह कैसे मैं अन-क्या कर सकते हैं मेरा आखिरी प्रतिबद्ध के बाद मैं एक 'Git पुश' किया था?

धन्यवाद।

जब मैं 'Git लॉग' करते हैं, मैं वादा अपने शीर्ष के रूप में मिलता है

commit 29fc764693a5933a379169e22891e4b0d3d2426f 
Merge: 002db49 cfb1d8f 

मैं कैसे 'git वापस लौटने' है कि परिवर्तन कर सकते हैं?

मैं इस

$ git revert HEAD 
fatal: Commit 29fc764693a5933a379169e22891e4b0d3d2426f is a merge but no -m option was given. 

उत्तर

7

आप git revert HEAD है, जो एक नए प्रतिबद्ध है, जो अपने पिछले प्रतिबद्ध में परिवर्तन पूर्ववत हो जाएंगे उत्पन्न उपयोग कर सकते हैं। here देखें। ध्यान दें कि हालांकि प्रतिबद्धता और वापसी दोनों ही इतिहास में दिखाई देंगे।

संपादित करें: जैसा कि किंगक्रंच ने उल्लेख किया है, विलय प्रतिबद्धता को वापस करते समय, आपको यह निर्दिष्ट करने की आवश्यकता है कि आप कौन से अभिभावक को वापस करना चाहते हैं, इसलिए -m <parent> जोड़ें। निस्संदेह मैंने जो लिंक पोस्ट किया है, उसके बाद बस आपको यह बताया होगा।

आप नहीं (अच्छी तरह से वास्तव में नहीं होना चाहिए) एक साझा भंडार के इतिहास बदल सकते हैं। आप (कृपया मत) इतिहास को संशोधित करने के लिए इच्छुक जिसमें अगर, आप git push --force, या git rebase साथ git reset उपयोग कर सकते हैं।

+0

इसका मतलब क्या है 'घातक: कमिट 29fc764693a5933a379169e22891e4b0d3d2426f एक विलय है लेकिन नो-एम विकल्प दिया गया था।' जब मैं 'गिट रिवर्ट हेड' करता हूं तो मुझे यह त्रुटि मिलती है? – michael

+1

'गिट रिवर्ट' पिछले प्रतिबद्धता पर लौटता है। यदि आप एक विलय प्रतिबद्धता को वापस करना चाहते हैं जो इतना आसान नहीं है, क्योंकि इसमें कम से कम 2 माता-पिता हैं और कोई भी नहीं कह सकता कि कौन सी शाखा है और जो मर्ज माता-पिता हैं/हैं। आपको '-m ' -option का उपयोग करके कौन सा करना है, उसे चुनना होगा। 'गिट हेल्प रिवर्ट' पर एक नज़र डालें। – KingCrunch

2

आप git revert प्रतिबद्ध चाहिए मिलता है।

आप git push --forcegit reset के बाद शाखा भी कर सकते हैं, लेकिन यदि कोई इससे पहले आपकी शाखा खींच लेता है, तो आपके इतिहास अलग हो जाएंगे, इसलिए आपको वास्तव में ऐसा नहीं करना चाहिए।

+0

ठीक है। लेकिन मैंने 'गिट प्रतिबद्ध' और फिर 'गिट पुश' किया, क्योंकि मैं अपना परिवर्तन वापस रोल करना चाहता हूं, मैंने 'गिट रीसेट - सॉफ्ट हेड ^' किया था और मैं उस बदलाव के बिना अपने कोड का परीक्षण करना चाहता हूं, मैंने 'गिट स्टैश' किया 'निर्माण और परीक्षण'। अब मुझे 'गिट रिवर्ट' करने से पहले, मुझे गिट स्टैश पॉप करने की ज़रूरत है? – michael

0

बस एक और भी आसान विधि पाया अगर आप GitLab और एक कोड की समीक्षा/मर्ज अनुरोध कदम का उपयोग कर रहे हैं। इस मिले के बाद मैं गलती से एक प्रतिबद्ध & धक्का में एक अनावश्यक फ़ाइल शामिल थे। आप संपादन करने के लिए इस विधि का उपयोग भी कर सकते हैं और उन्हें विलय से पहले अपनी शाखा में अनुशंसा कर सकते हैं।

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

नोट: यह केवल एक विकल्प से पहले किसी मर्ज अनुरोध स्वीकार कर लिया जाता है।

GitLab को धक्का देने के बाद और इससे पहले कि एक प्रतिबद्ध से एक फ़ाइल को निकालने के लिए विलय:

  1. ओपन GitLab अनुरोध विलय
  2. 'परिवर्तन' टैब
  3. का चयन करें फ़ाइल है कि में अवांछित है का पता लगाएं
  4. क्लिक करें 'हटाएं' बटन फ़ाइल
  5. के लिए 'देखें फ़ाइल' बटन पर क्लिक
  6. प्रतिबद्ध जानकारी एक दर्ज प्रतिबद्ध nd परिवर्तन

आपका विलय अनुरोध अब तय कर दिया गया है और अवांछित फ़ाइल आपकी प्रतिबद्धता से हटा दी गई है। अब आप विलय कर सकते हैं (यदि शेष पास कोड समीक्षा)।

आप इस तरह से फ़ाइलों को संपादित और अनुशंसा भी कर सकते हैं। ग्रहण/इंटेलिजे (जो भी अन्य उपकरण आप उपयोग करते हैं) खोलने और शाखा की जांच करने के बिना त्वरित सुधार करने का यह एक आसान तरीका है।

यह मुझे ग्रहण में धक्का वाली शाखा से फ़ाइल को हटाने से निपटने से बचने के दर्द के घंटे बचाता है।

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