मैं Git में नया हूं, इसलिए मुझे एक नौसिखिया की तरह व्यवहार करने के लिए स्वतंत्र महसूस करें।
हमारी वर्कफ़्लो ऐसी है। हमारे पास एक शाखा है जिसे devमैं यहां तक पहुंचा सकता हूं origin/dev। जब हम परिवर्तन करते हैं, हम देव से एक शाखा बनाते हैं:
git चेकआउट -b FixForBug मूल / देव
अब मेरे पास एक शाखा है FixForBugजो ट्रैकिंग है (मुझे लगता है कि यह सही शब्द है) origin/dev। इस प्रकार, अगर मैं ऐसा करता हूं तो git pullयह नए बदलाव लाएगा origin/devजिसमें से महान है। अब, जब मैं अपने फिक्स के साथ समाप्त कर रहा हूं, तो मैं एक रिमोट ब्रांच पर धकेलता हूं जिसे समान चीज कहा जाता है।
पहले मैं किसी भी परिवर्तन को नीचे से origin/devहटाता हूं और एक छूट देता हूं:
गिट पुल - क्रेबसे
फिर मैं उसी नाम की एक दूरस्थ शाखा में बदलावों को आगे बढ़ाता हूं:
git पुश ओरिजिन FixForBug
अब, दूरस्थ सर्वर पर एक शाखा है और मैं उस परिवर्तन के लिए एक पुल अनुरोध को मंजूरी दे सकता हूं और वापस देव शाखा में विलय कर सकता हूं। मैं कभी भी origin/devअपने आप को कुछ भी धक्का नहीं देता । मुझे लगता है कि यह बहुत आम कार्यप्रवाह है।
पहली बार जब मैं ए git pushकरता हूं , यह ठीक काम करता है और रिमोट ब्रांच बनाता है। हालाँकि, अगर मैं दूसरी बार धक्का देता हूँ (चलो कोड-समीक्षा के दौरान कहते हैं, कोई समस्या बताता है), तो मुझे निम्नलिखित त्रुटि मिलती है:
त्रुटि: 'के लिए कुछ refs धक्का करने में विफल रहा https://github.limeade.info/Limeade/product.git ' संकेत: अपडेट अस्वीकार कर दिया गया है क्योंकि अपने वर्तमान शाखा की नोक संकेत के पीछे है: इसके दूरदराज के समकक्ष। फिर से पुश करने से पहले दूरस्थ परिवर्तनों (जैसे संकेत: 'गिट पुल ...') को एकीकृत करें। संकेत: विवरण के लिए 'git push-help' में 'फास्ट-फॉरवर्ड के बारे में नोट' देखें।
हालांकि, अगर मैं ऐसा करता हूं तो मैं git statusकहता हूं कि मैं origin/dev1 कमिट से आगे हूं (जो समझ में आता है) और अगर मैं संकेत का पालन करता हूं और दौड़ता हूं git pull, तो यह कहता है कि सब कुछ अप टू डेट है। मुझे लगता है कि यह इसलिए है क्योंकि मैं अपनी अपस्ट्रीम शाखा की तुलना में एक अलग शाखा पर जोर दे रहा हूं। मैं इस समस्या को चलाकर ठीक कर सकता हूं:
git push -f origin FixForBug
उस स्थिति में, यह दूरस्थ शाखा में परिवर्तन को धक्का देगा, यह कहते हुए (मजबूर अपडेट) और दूरस्थ शाखा पर सब कुछ अच्छा प्रतीत होता है।
मेरे सवाल:
-fइस परिदृश्य में क्यों आवश्यक है? आमतौर पर जब आप कुछ करने के लिए मजबूर कर रहे हैं , यह इसलिए है क्योंकि आप कुछ गलत कर रहे थे या कम से कम मानक अभ्यास के खिलाफ। क्या मैं ऐसा कर रहा हूं, या यह दूरस्थ शाखा में कुछ गड़बड़ कर देगा या जो कोई भी अंततः मेरे सामान को देव में विलय करने के लिए परेशानी पैदा करेगा?
git pull origin FixForBugइससे पहले कि मैं इसे धकेलूं ? ठीक है कि समझ में आता है। एक उत्तर के रूप में जोड़ने के लिए स्वतंत्र महसूस करो!
