जवाबों:
git reset --hard HEAD~1
git push -f <remote> <branch>
(उदाहरण के लिए धक्का: git push -f origin bugfix/bug123
)
यह अंतिम प्रतिबद्ध को पूर्ववत करेगा और अपडेट किए गए इतिहास को रिमोट पर धकेल देगा। आपको पास होने की आवश्यकता है -f
क्योंकि आप रिमोट में अपस्ट्रीम इतिहास की जगह ले रहे हैं।
git log --decorate --oneline
यह जानने के लिए उपयोग करें कि आपका HEAD कहां इंगित करता है।
git reset HEAD~1
यदि आप नहीं चाहते हैं कि आपके परिवर्तन समाप्त हो जाएं (अस्थिर परिवर्तन)। बदलें, प्रतिबद्ध करें और फिर से धक्का देंgit push -f [origin] [branch]
आम तौर पर, "उलटा" वचनबद्ध करें,
git revert 364705c
फिर इसे हमेशा की तरह रिमोट पर भेजें:
git push
यह कमिट को डिलीट नहीं करेगा: यह एक अतिरिक्त कमिट बनाता है जो पहले कमिट करता है। कुछ और, वास्तव में सुरक्षित नहीं है, खासकर जब परिवर्तन पहले से ही प्रचारित हो चुके हैं।
git reset
केवल तभी स्वीकार किया जाता है यदि आपने अभी भी सर्वर में परिवर्तन को आगे नहीं बढ़ाया है।
सबसे पहले, आराम करें।
"कुछ भी हमारे नियंत्रण में नहीं है। हमारा नियंत्रण केवल भ्रम है।", "गलती करने के लिए मानव है"
मुझे लगता है कि आपने अनजाने में अपना कोड धक्का दे दिया है remote-master
। यह ठीक होने जा रहा है।
1. सबसे पहले, SHA-1
उस प्रतिमान का मूल्य प्राप्त करें जिसे आप वापस करने की कोशिश कर रहे हैं, जैसे कि मास्टर शाखा के लिए प्रतिबद्ध। इसे चलाओ:
git log
आप 'f650a9e398ad9ca606b25513bd4af9fe ...' के हर तरह के कमेंट के साथ तार देखेंगे। उस नंबर को उस कमेट से कॉपी करें जिसे आप वापस करना चाहते हैं ।
2. अब, नीचे दिए गए कमांड में टाइप करें:
git reset --hard your_that_copied_string_but_without_quote_mark
आपको "HEAD is at" जैसे संदेश को देखना चाहिए। आप स्पष्ट हैं। बस यह किया है कि स्थानीय स्तर पर परिवर्तन को प्रतिबिंबित करें।
3। अब, नीचे कमांड में टाइप करें:
git push -f
आपको देखना चाहिए
"चेतावनी: push.default परेशान है; इसका निहित मूल्य ..... में बदल गया है ... कुल 0 (डेल्टा 0), पुन: उपयोग किया गया 0 (डेल्टा 0) ... ... your_branch_name -> मास्टर (मजबूर अद्यतन) । "
अब, आप सभी स्पष्ट हैं। फिर से "गिट लॉग" के साथ मास्टर की जांच करें, आपका फिक्स्ड_डेस्टिनेशन_काम सूची के शीर्ष पर होना चाहिए।
आपका स्वागत है (अग्रिम में;))
अपडेट करें:
अब, इन सभी को शुरू करने से पहले आपने जो बदलाव किए थे, वे अब चले गए हैं। यदि आप उन कठिन परिश्रमों को फिर से लाना चाहते हैं, तो यह संभव है। Git reflog , और git चेरी-पिक का धन्यवाद कमांड ।
उसके लिए, मैं इस ब्लॉग या इस पोस्ट का अनुसरण करने का सुझाव दूंगा ।
आप एक इंटरैक्टिव रिबेस कर सकते हैं:
git rebase -i <commit>
यह आपके डिफ़ॉल्ट संपादक को लाएगा। बस उस कमिट को हटा दें जिसमें आप उस कमिट को हटाना चाहते हैं।
बेशक, आपको इस परिवर्तन को लागू करने के लिए दूरस्थ रिपॉजिटरी तक पहुंच की आवश्यकता होगी।
यह प्रश्न देखें: Git: चयनित कमिट्स को रिपॉजिटरी से हटा दें
git reset --hard <the-sha-you-want-to-return-to>
।