git: GitHub पर कमिट कैसे करें?

एक आदमी को एक मछली दें और आप उसे एक दिन के लिए खिलाएं; एक आदमी को मछली सिखाना और आप उसे जीवन भर खाना खिलाते हैं।
खराब रिवर्ट से एक महान व्यक्ति के पास जा रहा है

अंतिम प्रतिबद्ध को पूर्ववत कैसे करें?

मैं आपको इस लेख के उत्तरार्ध के लिए एक विस्तृत विवरण छोड़ते हुए, आपको तुरंत मछली (उत्तर) दूंगा।

git लॉग git रिवर्ट HEAD git पुश

विशिष्ट पुरानी प्रतिबद्धताओं को पूर्ववत कैसे करें?

git लॉग # अपनी प्रतिबद्ध हैश git के लिए खोज वापस # कभी-कभी संघर्ष को हल करें, नीचे अधिक जानकारी। जोर का धक्का

इसलिए सबसे पहले, आपको यह जानना होगा कि आप जिस कमिटमेंट को वापस करना चाहते हैं, उसकी पहचान कैसे करें, और यह कमिट का हैश प्रदान करके किया जाता है। जब आप अपने कंसोल में लॉग-इन टाइप करते हैं - git आपको आपके कमिट का इतिहास दिखाएगा:

git लॉग आउटपुट

अब आपको बस उस कमिट को चुनना है जो दोषपूर्ण थी, उसके हैश और वॉइला को कॉपी करें! यह बहुत बार केवल एक हैश से कुछ पहले वर्णों को कॉपी करने के लिए पर्याप्त होता है, क्योंकि जैसे ही वे वर्ण अद्वितीय होते हैं, गिट को पता चल जाएगा कि आप कौन सा कमिट करना चाहते हैं। मेरे मामले में, यह होगा:

git revert 56c64351620a754f059af8a5c5b8ecf8f2a5e5e # git भी छोटे संस्करण को स्वीकार करेगा: git 56c6

git 56c6 को वापस करे

अब एक ऐसा हिस्सा है जो शुरुआती लोगों के लिए डरावना हो सकता है, जो कमिट मैसेज एडिटर शुरू कर रहा है - मेरे मामले में विम।

आपको क्या करना चाहिये? आप बस "टाइप करें: wq" लिख सकते हैं - एक संदेश छोड़ने के लिए, जैसा कि यह है (रिवर्ट "बैड कमिट :("), या "i" को INSERT MODE में लाने के लिए और संदेश को संपादित करने के लिए लिखें।

टाइप करके `संदेश संपादक` को छोड़ना एक दूसरा विकल्प भी है:

git revert --no-edit 56c64

और परिणामी प्रतिबद्ध संदेश रिवर्ट के रूप में होगा " "।

परिणाम संदेश

अब git लॉग हमें दिखाएगा, कि हमने एक कमिट किया है, जो हमारे द्वारा प्रदान की गई__sh (git log --online के साथ आउटपुट) से पहले राज्य को git देता है:

गिट लॉग - ऑनलाइन

अब अगर आप GitHub, Bitbucket या gitlab जैसे रिमोट रिपॉजिटरी पर अपने बदलाव देखना चाहते हैं, तो बस git पुश के साथ बदलाव को पुश करें और ... मुझे आशा है कि यह है!

इस लेख का अंतिम भाग उन लोगों के लिए है जो ज्ञान प्राप्त करना चाहते हैं, साथ ही उन लोगों के लिए, जिनके पास रास्ते में त्रुटियां थीं।

समस्या निवारण

यदि आपके पास कोई प्रश्न या त्रुटियां हैं, तो जिस तरह से मैं उन्हें जवाब देने के लिए खुश हूं उससे अधिक पॉपिंग के साथ :)

कमिट्स की रिवर्ट रेंज

हमारे छोटे उदाहरण में मैंने कुछ कमियाँ जोड़ी हैं, प्रत्येक एक नई फ़ाइल (ए, बी, सी और डी) के साथ:

तो रेपो इस तरह दिखता है:

यदि मैं git re7 e3d3 ("b.txt" कमिट) टाइप करता हूं तो क्या होगा? Git केवल एक कमिट को वापस करने की कोशिश करेगा, इसलिए हम जो कमिट मैसेज देखेंगे उसमें:

और इसका मतलब है कि फ़ाइलें c.txt और d.txt अछूती रहेंगी!

यही कारण है कि b.txt c.txt और d.txt (तीन कमिट) को जोड़ने वाले कमिट्स को वापस करना है, हमें एक सीमा निर्दिष्ट करनी होगी (नीचे दिए गए लिंक में रेंज पर अधिक):

git revert b976..67c4

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

यहां आप टाइप करके रिवर्ट जारी रख सकते हैं:

git रिवर्ट - कॉन्टिन्यू

दूसरी ओर, यदि आप कस्टम प्रतिबद्ध संदेशों को निर्दिष्ट करने के बारे में परवाह नहीं करते हैं, तो आप एक कमांड में कई कमिट्स वापस कर सकते हैं:

git revert --no-edit b976..67c4 #OR git revert - कोई-प्रतिबद्ध b976..67c4 && git कमिट

अंतर यह है:

  • - नो-एडिट एक सीमा में एक निर्दिष्ट कमिट के लिए प्रत्येक के लिए एक से अधिक रिटर्न्स बनाएगा
  • - नो-कमिट बदलावों को तैयार करेगा ताकि आपके पास सभी बुरे लोगों के लिए एक बड़ी प्रतिबद्धता हो।

उपयोगी कड़ियाँ:

  • कुछ भी पूर्ववत करने के बारे में महान GitHub लेख
  • Git-revert प्रलेखन
  • stackOverflow: एक मर्ज वापस करें
  • स्टैकओवरफ़्लो: एक पिछली प्रतिबद्धता पर वापस लौटें
  • पूर्ववत करें कि कोई धक्का नहीं दिया गया है
  • Git में पर्वतमाला कैसे निर्दिष्ट करें
  • निर्दिष्ट सीमा की जाँच करें