यह मानते हुए कि आपकी शाखा को master
यहां और दूरस्थ रूप से बुलाया जाता है , और यह कि आपका रिमोट origin
आपको कहा जाता है:
git reset --hard <commit-hash>
git push -f origin master
हालाँकि, आपको ऐसा करने से बचना चाहिए यदि कोई अन्य आपके दूरस्थ भंडार के साथ काम कर रहा है और आपके परिवर्तनों को खींच लिया है। उस मामले में, उन कमिटों को वापस करना बेहतर होगा जो आप नहीं चाहते हैं, फिर सामान्य रूप से धक्का दें।
अद्यतन: आपने नीचे बताया है कि अन्य लोगों ने आपके द्वारा किए गए परिवर्तनों को खींच लिया है, इसलिए उन सभी परिवर्तनों को वापस करने वाली एक नई प्रतिबद्धता बनाने के लिए बेहतर है । जकुब नारबस्की से इस उत्तर में ऐसा करने के लिए आपके विकल्पों की एक अच्छी व्याख्या है । कौन सा सबसे सुविधाजनक है यह इस बात पर निर्भर करता है कि आप कितने कमिट करना चाहते हैं, और कौन सी विधि आपके लिए सबसे ज्यादा मायने रखती है।
चूंकि आपके प्रश्न से यह स्पष्ट है कि आपने git reset --hard
अपनी master
शाखा को रीसेट करने के लिए पहले ही उपयोग कर लिया है , तो आपको git reset --hard ORIG_HEAD
अपनी शाखा को वापस उसी स्थान पर ले जाने के लिए उपयोग करने की आवश्यकता हो सकती है जहां वह पहले था। (हमेशा की तरह git reset --hard
, सुनिश्चित करें कि git status
वह साफ है, कि आप सही शाखा पर हैं और आपको git reflog
खोए हुए कमिट को पुनर्प्राप्त करने के लिए एक उपकरण के रूप में पता है।) आपको ORIG_HEAD
सही बिंदु के साथ उस बिंदु को भी जांचना चाहिए git show ORIG_HEAD
।
समस्या निवारण:
यदि आपको एक संदेश मिलता है "" ! [रिमोट अस्वीकृत] a60f7d85 -> मास्टर (पूर्व प्राप्त हुक अस्वीकृत) "
फिर आपको विशिष्ट शाखा के लिए शाखा इतिहास पुनर्लेखन की अनुमति देनी होगी। उदाहरण के लिए BitBucket में यह कहा गया था "शाखा इतिहास को फिर से लिखने की अनुमति नहीं है"। एक चेकबॉक्स है जिसका नाम Allow rewriting branch history
आपको चेक करना है।
origin/master
अन्य उपयोगकर्ताओं द्वारा खींचा और धक्का नहीं दिया गया है? एक सार्वजनिक (यानी गैर-स्थानीय) रिपॉजिटरी का इतिहास बदलना आप हर समय बचना चाहते हैं।