आम Git की गलतियाँ क्या हैं और उन्हें कैसे ठीक किया जाए?



गिट वर्जनिंग सिस्टम टूल में अपने कोड को बनाते समय सबसे आम गलतियों को पूर्ववत करें और अपने डेटा अखंडता की रक्षा करें।

के उछाल के साथ प्रौद्योगिकी, किसी भी आईटी व्यक्ति के लिए एक साथ कई डेटा पर काम करना अपरिहार्य हो जाता है और आपका डेटा समय के साथ विकसित होता है। डेटा में हर परिवर्तन को ट्रैक करना और आवश्यक होने पर किसी भी अवांछित परिवर्तन को पूर्ववत या वापस करने के लिए तैयार रहना भी आवश्यक है।

मुझे स्वीकार करना चाहिए, Git में अपना डेटा संस्करणबद्ध करने से मुझे अपने प्रोजेक्ट विकास में अधिक प्रयोगात्मक होने की अनुमति मिलती है। अगर मैं गड़बड़ करता हूं, तो मुझे पता है कि git के पास हमेशा मेरे प्रोजेक्ट के उस संस्करण को पूर्ववत करने और / या वापस लाने का एक तरीका होता है, जिस तरह से मैं खराब हो गया था। से प्रत्येक परत को डेटा परिवर्तनों की समीक्षा करने और संशोधित करने और / या अगले चरण में डेटा स्थानांतरित करने से पहले सही करने के लिए डिज़ाइन किया गया है। तो निम्नलिखित गलतियाँ हैं जो इस ब्लॉग में शामिल हैं:





इंडेक्स से अन-स्टेज फाइलें / डायरेक्ट्रीज

फ़ाइलों को जोड़ने और / या संशोधित करते समय आप अक्सर add git add 'कमांड के डिफ़ॉल्ट व्यवहार का उपयोग करते हैं, जो कि सभी फ़ाइलों और निर्देशिकाओं को अनुक्रमणिका में जोड़ना है।कई बार आपको कुछ फ़ाइलों को अन-स्टेज करने या उन्हें अंतिम रूप देने से पहले उन्हें अंतिम बार संशोधित करने की आवश्यकता महसूस होती है।



वाक्य - विन्यास: गिट रीसेट

विंडोज़ 8 पर php स्थापित करें


सूचकांक से फ़ाइलों को हटा दें - सामान्य गिट गलतियाँ -dureka

इंडेक्स क्षेत्र से अन-स्टैगिंग फाइलें आपको स्थानीय रेपो के लिए प्रतिबद्ध होने से पहले अपने डेटा पर फिर से काम करने का एक और मौका देती हैं।



अंतिम प्रतिबद्ध संदेश संपादित करें

आदेश: git प्रतिबद्ध - काम करना
आप एक नया निर्माण किए बिना नवीनतम प्रतिबद्ध संदेश को संपादित कर सकते हैं। प्रतिबद्ध लॉग को सूचीबद्ध करने के लिए, मैंने एक the हिस्ट ’सेट किया है:
आदेश: git config --global alias.hist 'log --pretty = format: '% C (पीला)% h% Creset% विज्ञापन | % C (हरा)% s% Creset% C (लाल)% d% Creset% C (नीला) [% a] '--graph --decorate --date = short'x


प्रतिबद्ध संदेश में संशोधन न करें जो पहले से ही एक दूरस्थ भंडार पर धकेल दिया गया है और दूसरों के साथ साझा किया गया है, क्योंकि यह पहले के प्रतिबद्ध इतिहास को अमान्य बना देगा और इस तरह से आधारित कोई भी कार्य प्रभावित हो सकता है।

आखिरी कमिटमेंट में कुछ बदलाव भूल गए

मान लें कि आप कुछ संशोधन करना भूल गए हैं और पहले से ही आपका स्नैपशॉट प्रतिबद्ध है, साथ ही आप अपनी गलती को उजागर करने के लिए एक और प्रतिबद्ध नहीं करना चाहते हैं।
आदेश: git प्रतिबद्ध - काम करना


मैंने इस बात पर प्रकाश डाला है कि हाल की प्रतिबद्ध वस्तु की sha-1 id को कैसे फिर से बनाया और बदला गया है। मैंने बहाना बनाया कि दोनों परिवर्तनों को एक में जोड़कर एक ही प्रतिबद्ध किया जाएगा।

स्थानीय परिवर्तनों को त्यागें

तो, यहाँ एक मामला है जहाँ मैंने 'README' फ़ाइल को संशोधित किया और उसका मंचन किया। इसके बाद, मैंने उसी फ़ाइल को दूसरी बार संशोधित किया लेकिन महसूस किया कि मैं दूसरा परिवर्तन नहीं चाहता।

अब, मुझे मैन्युअल रूप से पूरे परिवर्तन को पूर्ववत नहीं करने दें, मैं केवल फ़ाइल के चरणबद्ध संस्करण को खींच सकता हूं।
वाक्य - विन्यास:
गिट चेकआउट -एक फ़ाइल में -Local परिवर्तन
गिट चेकआउट -निर्देशिका और शर्मीली और शर्मीली में सभी फाइलों में -लोक परिवर्तन

आदेश: git checkout - README

इसलिए, मैंने फ़ाइल में अपने अंतिम परिवर्तनों को छोड़ दिया और फ़ाइल के चरणबद्ध संस्करण को स्वीकार कर लिया। अगले प्रतिबद्ध में, फ़ाइल का केवल मंचित संस्करण स्थानीय रिपॉजिटरी में जाता है।

स्थानीय रिपॉजिटरी को व्यक्तिगत डेटा दिया

मैं स्थानीय रिपॉजिटरी से कुछ डेटा हटाना चाहता हूं लेकिन फाइलों को वर्किंग डायरेक्टरी में रखता हूं।
वाक्य - विन्यास:
git रीसेट - अमिट हेड ~
git रीसेट --mixed

आदेश: git reset --mixed HEAD ~ 1
HEAD ~ 1, वर्तमान शाखा HEAD द्वारा बताई गई हालिया कमिट से ठीक पहले एक कमिट इंगित करता है।

वर्तमान स्नैपशॉट में फ़ाइलें स्थानीय रिपॉजिटरी और स्टेजिंग क्षेत्र दोनों से हटा दी गई हैं। वैश्विक .gitignore फ़ाइल में निम्न पैटर्न जोड़कर उन्हें ट्रैक करने से रोका जा सकता है।
vim ~ / .gitignore_global
# पासवर्ड फ़ाइलें #
*।उत्तीर्ण करना
*।चाभी
* .wdwd

इसके साथ, कमिटमेंट जिसमें पासवर्ड फ़ाइलों का स्नैपशॉट हटा दिया गया है, और आपको एक क्लीन स्टेजिंग क्षेत्र मिलता है। मेरी फ़ाइलें अभी भी मेरी कार्यशील निर्देशिका पर मौजूद हैं, लेकिन अब स्थानीय रिपॉजिटरी में मौजूद नहीं हैं, उन्हें दूरस्थ रिपॉजिटरी पर भी नहीं धकेला जाएगा।

सावधान: यदि आप उन्हें खो देते हैं तो यह आपके लिए उन्हें ठीक नहीं कर सकता क्योंकि इसके बारे में उसे पता नहीं है।

नवीनतम कमेटी को नई कमेटी से बदलें

वाक्य - विन्यास: git रीसेट - soft [/ HEAD ~ n>]

‘-Soft 'विकल्प सिर्फ स्थानीय रिपॉजिटरी से प्रतिबद्ध फ़ाइलों को हटा दें, जबकि वे अभी भी सूचकांक में मंचित हैं और आप समीक्षा के बाद उन्हें फिर से प्रतिबद्ध कर सकते हैं। स्नैपशॉट का sha-1 है जिसे आप स्थानीय रेपो से हटाना चाहते हैं। जहां HEAD प्रतिबद्ध होने से पहले n कमिट की संख्या है

कमान :git reset --soft HEAD ~ 1


फ़ाइलों को संशोधित करें और उन्हें फिर से चरणबद्ध करें

आदेश: git प्रतिबद्ध -m 'index.html और style.css जोड़ना'
आपका प्रतिबद्ध इतिहास अब निकला है:

गलत डेटा को कमिट किया

वाक्य - विन्यास:
git रीसेट - भार HEAD ~ nनवीनतम प्रतिबद्ध स्नैपशॉट से पहले परियोजना को ’n 'तक ले जाएं
git रीसेट --हार्ड-स्टैट आईडी स्नैपशॉट को प्रोजेक्ट को सेट करें

आदेश: git रीसेट - भार HEAD ~ 1


लेटेस्ट कमिट और करप्ट फाइल्स को लोकल रिपॉजिटरी, स्टेजिंग एरिया के साथ-साथ वर्किंग डायरेक्टरी से हटा दिया जाता है।

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

मेरे पुराने प्रोजेक्ट स्थिति पर वापस जाएं

आप समय के इतिहास में अपनी परियोजना के एक पुराने राज्य के लिए ump कर सकते हैं। यदि आप नवीनतम संस्करण में गड़बड़ी करते हैं या पुराने कोड में एन्हांसमेंट की आवश्यकता होती है, तो आप उस पुराने प्रोजेक्ट स्नैपशॉट से एक और शाखा बनाना चाह सकते हैं जो आपके वर्तमान कार्य में बाधा न हो। आइए देखें कैसे:
ए। परियोजना के इतिहास को सूचीबद्ध करें और पुरानी प्रतिबद्ध आईडी पर फैसला करें:जा छुप जाना
बी। प्रतिबद्ध आईडी से दूसरी शाखा बनाएँ:git चेकआउट -b पुराना-राज्य e7aa9a5
सी। कोड पर काम करना जारी रखें और बाद में branch मास्टर ’शाखा के साथ विलय / छूट दें।

हटाए गए स्थानीय शाखा को पुनर्प्राप्त करें

एक संदर्भ शाखा पर खोए हुए काम को फिर से बनाना संभव है। कहते हैं, मैंने मुख्य शाखा के साथ विलय किए बिना शाखा _ old_code ’को हटा दिया और काम खो दिया। और नहीं, मैंने शाखा को दूरस्थ रिपॉजिटरी में या तो धक्का नहीं दिया, फिर क्या? अच्छी तरह से ट्रैक करें और प्रत्येक संदर्भ पर किए गए सभी परिवर्तनों की एक जर्नल प्रविष्टि रखें, आइए देखें:फिर से जाना

इसलिए, जब मैं code old_code ’शाखा में गया तो HEAD @ {2} पॉइंटर है, इसे पुनः प्राप्त करें:

वाक्य - विन्यास:git checkout -b
आदेश:git चेकआउट -b old_code HEAD @ {2}

अब आप अपने निर्माण के समय अपने नवीनतम काम के साथ 'old_code' शाखा में होना चाहिए। आमतौर पर, HEAD @ {1} में 'reflog' पॉइंटर को 'old_code' शाखा पर हाल ही में किया गया था। इस अद्वितीय को पुनर्स्थापित करें प्रतिबद्ध के रूप में सिर्फ कमांड चलाने के लिए:git रीसेट - भार HEAD @ {1}।यह कार्यशील निर्देशिका में संशोधित फ़ाइलों को भी पुनर्स्थापित करता है।

यदि आप विस्तार से जानना चाहते हैं कि यह कमांड कैसे काम करता है और आप ’रिफ्लॉग’ प्रविष्टियों का प्रबंधन कैसे कर सकते हैं, तो आप अपने पहले के पोस्ट को भी पढ़ सकते हैंहटाए गए शाखा को git reflog से पुनर्प्राप्त करना

एक प्रतिबद्ध में किए गए परिवर्तन पूर्ववत करें

जाओवापस लौटनापहले के कुछ हिट के प्रभाव को उलटने के लिए कुछ नए कमिट्स रिकॉर्ड करने के लिए उपयोग किया जाता है।
वाक्य - विन्यास: git रिवर्ट
मेरे कमिट लॉग से, मैं हाइलाइट की गई आईडी में किए गए बदलाव को उलटना चाहूंगा:

आदेश: git 827bc0d पर वापस जाएं

यह बेहतर है, कि आप साझा किए गए हिट्स को 'एड-रीसेट' न करें, बल्कि इतिहास को संरक्षित करने के लिए उन्हें 'वापस लौटाएं' ताकि सभी के लिए इतिहास लॉग को ट्रैक करने के लिए यह पता लगाना आसान हो जाए कि क्या हुआ था, किसके द्वारा वापस किया गया था और क्यों?

आप प्रतिबद्ध आईडी देने के बजाय HEAD पॉइंटर के विषय में कमिट्स को संदर्भित करने के उसी तर्क का उपयोग कर सकते हैं, जैसा कि HEAD ~ 3 या HEAD ~ 4 और इसी तरह।

मेरी शाखा को गलत नाम दिया

आप एक स्थानीय शाखा का नाम बदल सकते हैं। ऐसा कई बार होता है कि आप जिस मुद्दे पर काम कर रहे हैं उसके आधार पर अपनी शाखा का नाम बदलने की इच्छा हो सकती है, जो आपके सभी काम को एक स्थान से दूसरे स्थान पर स्थानांतरित करने के दर्द से गुजर रही है। उदाहरण के लिए, आप या तो एक ही शाखा या एक अलग शाखा पर हो सकते हैं और फिर भी नीचे दिखाए अनुसार वांछित शाखा का नाम बदलने में सक्षम हो सकते हैं:
वाक्य - विन्यास: git शाखा -m
आदेश: git शाखा -m old_code old_ # 4920

जैसा कि आप सोच सकते हैं कि इस नाम का ट्रैक रखता है? हां, यह आपकी log रिफ्लॉग ’प्रविष्टियों का उल्लेख करता है, यहाँ मेरा है:

शाखा का नाम बदलने से इसकी दूरस्थ-ट्रैकिंग शाखा पर कोई प्रभाव नहीं पड़ेगा। हम दूरस्थ अनुभाग में देखेंगे कि दूरस्थ रिपॉजिटरी की शाखा को कैसे बदला जाए

रिमोट से पुश करने से पहले इतिहास लॉग को फिर से व्यवस्थित करें

मैं कैसे कामना करता हूं कि मैंने दूसरों की तुलना में पहले कुछ कमिट किए होंगे और कुछ कमिट नहीं किए होंगे। कोड को प्रभावी ढंग से ठीक करने या बढ़ाने के लिए पुराने कमिट्स को पुन: व्यवस्थित करें और संपादित करें
वाक्य - विन्यास: git rebase -i
आदेश: git rebase -i fb0a90e-स्टार्ट-आईडी fb0a90e के बाद किए गए कमिट्स को रीस्टार्ट करना

फिर से जाएँ git rebase यह समझने के लिए दस्तावेज़ीकरण कि ‘-interactive या -i 'रिबास एक नियमित रिबेस से अलग कैसे है।

एक ही प्रतिबद्ध में संबंधित असंबंधित परिवर्तन

इस मामले में, आपको एक पुरानी दफन प्रतिबद्ध को कई तार्किक कमिटों में विभाजित करने की आवश्यकता है।
वाक्य - विन्यास: git rebase -i
आदेश: git rebase -i fb0a90e
रिबेसेज़ एडिटर में, आपको e7aa9a5 प्रतिबद्ध आईडी चुनना होगा और इसे। पिक ’के बजाय’ एडिट ’में बदलना होगा।

असंबंधित परिवर्तन - सामान्य गिट गलतियाँ -Edureka

अब आप इस परियोजना के प्रतिबद्ध आईडी-ई 7 ए 9 ए 5 के संस्करण में होंगे। सबसे पहले, कमिट इतिहास और स्टेजिंग एरिया को पिछली कमिटमेंट में रीसेट करें:git रीसेट HEAD ~ 1
दूसरा, संपादित + चरण + व्यक्तिगत रूप से फ़ाइलों को प्रतिबद्ध
आदेश:
git add code && git कमिट -म 'आरंभिक कोड जोड़ना'
git add newcode && git प्रतिबद्ध -m 'नया कोड जोड़ना'

तीसरा, रिबास जारी रखें और समाप्त करें।

कमान :गिट रिबास - कॉन्टिन्यू
चौथा, इतिहास को अतिरिक्त कमिट्स के साथ देखें।

आदेश: जा छुप जाना

रिबेट का उपयोग करते हुए कई में विभाजन करना - सामान्य गिट गलतियों - एडुरका

सभी शाखाओं पर सभी में लेखक-ईमेल बदलें

मैं अब लंबे समय से गिट में अपनी परियोजना फाइलों को संस्करणबद्ध कर रहा हूं, लेकिन अब तक इसने मुझे कभी नहीं मारा कि मेरी ईमेल आईडी को मेरे प्रतिबद्ध इतिहास लॉग में समझौता किया गया था जो दूरस्थ रिपॉजिटरी पर भी प्रकाशित हैं। ठीक है, यह किसी के साथ भी हो सकता है जब आप शुरू में '.itconfig' फ़ाइल में विन्यास सेट करते हैं। फिर से लिखना पर्यावरण चर हम एक वस्तु बनाते समय प्रदान करते हैं।

पहले मुझे इसकी सूची मिलती है ईमेल आईडी जो मैं बदलना चाहता हूं, उसे तय करना:
आदेश: git log --all --pretty = format: '% a% d'-यह लेखक-नाम (नाम / शाखा-नाम) प्रिंट करता है

दूसरा, मैं के माध्यम से चलाते हैं प्रत्येक शाखा पर हर कमिट और नई ईमेल आईडी के साथ प्रतिबद्ध वस्तु को फिर से लिखें
आदेश:
git फ़िल्टर-शाखा --env-filter '
अगर ['$ GIT_AUTHOR_NAME' = 'divya']
तब फिर
GIT_AUTHOR_EMAIL = 'divya@github.com'
हो
' -- --सब

खोया और पाया फाइलें

कैसे सेलेनियम में स्क्रीनशॉट लेने के लिए

मान लीजिए कि आपने एक निश्चित फ़ाइल खो दी है और आपको उसका नाम याद नहीं है, लेकिन फ़ाइल में कुछ शब्दों को याद कर सकते हैं। इस मामले में, आप इन चरणों का पालन कर सकते हैं-
स्टेप 1: उन सभी कमिटों की सूची बनाएं जिनमें कभी खोजे गए पैटर्न के साथ फाइल स्नैपशॉट निहित था
कमान :git रि-लिस्ट --all | xargs git grep -i 'टाइमस्टैम्प'



चरण 2 : इस हाइलाइट की गई आईडी से एक नई शाखा 'खोया-पाया' बनाएं
वाक्य - विन्यास: git checkout -b खो-पाया d8c6a76a6dcb1fc6e8c3f6b097e1bd07e7cd328f

भूल गए कि किस शाखा में मेरा कमिटमेंट है

कई बार, जब आप एक छोटी-सी प्रतिबद्ध आईडी का पता लगाते हैं, तो आप उन सभी शाखाओं को जानना चाहते हैं, जिन पर यह प्रतिबद्ध है, ताकि आप उन सभी को ठीक कर सकें। एक बड़ी बहु-शाखा परियोजना में प्रत्येक शाखा के इतिहास की जाँच करना बहुत व्यावहारिक नहीं है।

मेरे नेविगेशन बिल्डिंग एप्लिकेशन में किए गए एक खराब कमेंट ने एक बार कोड को तोड़ दिया, जब मैंने इसका उपयोग किया Was git bisect 'कमांड उस खराब आईडी का पता लगाने के लिए है जो खराब थी इसके बादआदेश:git ब्रांच --containsउस बुरे कमिट के साथ शाखाओं को सूचीबद्ध करना।

तो, अब मैं उन सभी शाखाओं को जानता हूं जो अभी भी खराब हैं, मैं या तो इस बदलाव को वापस कर सकता हूं या रीसेट कर सकता हूं।

इतिहास से एक कमिट डिलीट करो

कभी-कभी मुझे लगता है कि इतिहास से एक कमिट मिटा देना चाहिए और इसका कोई निशान नहीं छोड़ना चाहिए। मैं आपको एक साझा शाखा पर इस स्टंट की कोशिश करने की सलाह नहीं दूंगा, लेकिन केवल आपकी स्थानीय शाखा पर।
वाक्य - विन्यास: git rebase -i
कमान :git rebase -i 93859d8
रिबेज़ एडिटर में- हाइलाइटेड कमिट आईडी के लिए for ड्रॉप ’के साथ‘ एडिट ’बदलें: 69f4813

कुछ मामलों में, इस फिर से लिखने के परिणामस्वरूप संघर्ष हो सकता है। आपको संघर्षों को हल करना होगा और फिर आगे बढ़ना होगा।

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

रिमोट के लिए एक गलत शाखा धक्का दिया

अब, यहाँ है कि मैं क्या करना चाहते हैं- मैं एक हटाना चाहते हैं दूरस्थ शाखा और इसे मेरी स्थानीय शाखा से ट्रैक करना भी बंद करें। 'जोर का धक्काWhen कमांड जब के साथ प्रयोग किया जाता है- डिल करेंविकल्प दूरस्थ शाखा को हटा देता है, इस प्रकार, मुझे क्लोन परियोजना की स्थानीय प्रति मिलती है -

git clone https://github.com/greets/myProj.git
सीडी myProj


एक बार, दूरस्थ शाखा को हटाए गए रेपो पर दूसरों को हटा दिया जाना चाहिए और उनके साथ अपने दूरस्थ संदर्भों को ताज़ा करना होगा और अपडेट करना होगा--छटनागायब ऑब्जेक्ट संदर्भों को हटाने का विकल्प:git fetch -prune -v उत्पत्ति

इस पोस्ट में, मैंने कुछ सामान्य गलतियों या परिवर्तनों का उल्लेख किया है जो गिट आपको ठीक करने में मदद कर सकते हैं। हर कोड अपने तरीके से अनोखा और विकसित होता है, इसलिए किसी समस्या के करीब आने और उसे ठीक करने के अलग-अलग तरीके भी होते हैं। आप हमेशा अधिकारी को संदर्भित कर सकते हैं गिट प्रलेखन यह समझने के लिए कि विभिन्न git कमांड आपके सोर्स कोड को कैसे सुरक्षित रखते हैं और कमांड्स का सर्वोत्तम तरीके से उपयोग कैसे करें।

अब जब आप सामान्य गिट गलतियों को समझ गए हैं, तो इसे देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। Edureka DevOps प्रमाणन प्रशिक्षण पाठ्यक्रम शिक्षार्थियों को समझने में मदद करता है कि DevOps क्या है और विभिन्न DevOps प्रक्रियाओं में विशेषज्ञता प्राप्त करते हैं और कठपुतली, जेनकींस, नागोइस, Ansible, शेफ, साल्टस्टैक और GIT जैसे विभिन्न चरणों को SDLC में स्वचालित करने के लिए।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इसे 'सामान्य गित गलतियों' के टिप्पणी अनुभाग में उल्लेख करें और हम आपको वापस प्राप्त करेंगे