मैं अपस्ट्रीम रेपो कैसे लाऊं और इसे मास्टर की जगह दूं? मेरे रेपो पर केवल एक शाखा है, जो मास्टर है, और मैंने इसे पूरी तरह से गड़बड़ कर दिया है, इसलिए मुझे मूल रूप से ऊपर से शुरू करना होगा। मुझे लगता है कि init काम करेगा, लेकिन क्या कोई आसान तरीका है?
मैं अपस्ट्रीम रेपो कैसे लाऊं और इसे मास्टर की जगह दूं? मेरे रेपो पर केवल एक शाखा है, जो मास्टर है, और मैंने इसे पूरी तरह से गड़बड़ कर दिया है, इसलिए मुझे मूल रूप से ऊपर से शुरू करना होगा। मुझे लगता है कि init काम करेगा, लेकिन क्या कोई आसान तरीका है?
जवाबों:
यहां आप कम से कम दो चीजें कर सकते हैं-आप दूरस्थ रेपो को फिर से प्राप्त कर सकते हैं, या आप reset --hardसामान्य पूर्वज के लिए कर सकते हैं और फिर एक पुल कर सकते हैं, जो दूरस्थ मास्टर पर नवीनतम प्रतिबद्ध के लिए तेजी से अग्रेषित करेगा।
ठोस होने के लिए, यहाँ नेविक रेहेल के मूल उत्तर का एक सरल विस्तार है:
git reset --hard origin/master
git pull origin master
नोट : उपयोग करने git reset --hardसे कोई भी परिवर्तन नहीं होगा, और यदि आप कार्य करने के लिए नए हैं तो इस आदेश के साथ स्वयं को भ्रमित करना आसान हो सकता है, इसलिए सुनिश्चित करें कि आगे बढ़ने से पहले आपको यह समझ में आ जाए कि यह क्या करने जा रहा है।
शाखा मास्टर के समय:
git reset --hard origin/master
तो कुछ के साथ सफाई git gc(आदमी पृष्ठों में इस बारे में और अधिक)
अपडेट: आपको संभवतः एक git fetch origin(या git fetch origin masterयदि आप केवल उस शाखा को चाहते हैं) करने की आवश्यकता होगी; रीसेट से पहले या बाद में ऐसा करने से कोई फर्क नहीं पड़ता। (साभार @ एरिक-वाकर)
reset --hard।
git reset <hash> # you need to know the last good hash, so you can remove all your local commits
git fetch upstream
git checkout master
git merge upstream/master
git push origin master -f
वॉइला, अब आपका कांटा वापस ऊपर की तरह है।
git gcसफाई और कुछ हाउसकीपिंग के माध्यम से चलाता है। एक और नोट पर, मैं कभी नहीं चलाgit gc। यह चलाने के लिए अच्छा है, लेकिन जरूरत नहीं है।