दो पिछले कमिट को रोलबैक कैसे करें?


83

इस परिदृश्य पर विचार करें:

  1. डेवलपर ए कमिट करता है: # एन
  2. देव। B # n + 1 करता है
  3. देव। A, # n + 2 करता है
  4. और प्रतिबद्ध # n + 3

और फिर पता चलता है कि अपने प्रतिबद्ध # n + 2 में उन्होंने एक दोष का परिचय दिया।

देव कैसे हो सकते हैं। एक रोलबैक उसके अंतिम 2 में आता है और कमिट # n + 1 पर विकसित होता रहता है ?

कोशिश की git reset --hard HEAD~2* , लेकिन यह वापस आ रहा है A की प्रतिबद्ध #n


2
अगर आपने B को उस बिंदु पर खींचा है तो git reset HEAD ~ 2 को # n + 1 कमिट पर रीसेट करना चाहिए। क्या आपने उन्हें खींचा?
स्नोबैयर

1
... इससे पहले # n + 2 कमिट नहीं। यह था: [0] बी को commit# n + 1, [1] ए commitटेड # n + 2, [2] असफल push, [3] pull, [4] धकेल दिया गया push। तो जीथुब पर अब एक कमिट (# n + 2) है, और एक मर्ज ब्रांच 'मास्टर' (# n + 3) है।
मारीस ब्यूटिक

2
यदि आपने पहले ही कमिट प्रकाशित कर दिया है, तो आपको इसे वापस रोल करने के लिए रीसेट का उपयोग नहीं करना चाहिए। (यदि किसी अन्य डेवलपर ने आपको अनकाउन्ट किया है, तो इससे दर्द होगा।) इसके बजाय, रिवर्ट का उपयोग करें और एक नया कमिट करें जो आपको उस राज्य में लाता है जिसे आप चाहते हैं। प्रकाशित इतिहास को कभी न बदलें। पुस्तक
विलियम

जवाबों:


122

इसे n + 1 कमिट पर वापस आना चाहिए। आपके पास शायद वहां भी एक मर्ज कमिटमेंट है। आप ए भी कर सकते हैंgit reset --hard <sha1_of_where_you_want_to_be>

चेतावनी !! --hardइसका मतलब यह है कि आपके द्वारा वर्तमान में किए गए किसी भी परिवर्तन नहीं किए जाने पर स्थायी रूप से फेंक दिया जाएगा।


2
मुझे दूरस्थ कम्‍पनी का sha1 कैसे मिलेगा (मेरे द्वारा नहीं किया गया)? मैंने प्रयोग करने की कोशिश की git reflog, लेकिन मैं केवल अपनी स्थानीय रिफ्लॉग जानकारी का उपयोग कर सकता हूं, जैसे #n, # n + 2, # n + 3 ... लेकिन # n + 1 नहीं
Marius Butuc

13
मुझे वह sha1 मिला जो मैं चाहता था git log, लेकिन git push -fयह भी आवश्यक था, इसलिए संशोधनों को जीथब पर प्रतिबिंबित किया जाएगा।
मारियस ब्यूटुक

1
हां, लेकिन मुझे नहीं पता था कि आप रिमोट को भी अपडेट करना चाहते हैं :)
एडम डाइमिट्रुक

25
चेतावनी !! --hardइसका मतलब यह है कि आपके द्वारा वर्तमान में किए गए किसी भी अप्रकाशित परिवर्तन को स्थायी रूप से दूर कर दिया जाएगा। अपने काम को दूर फेंकने के लिए पिछले प्रतिबद्ध w / o पर वापस जाने के लिए, उपयोग करें --soft
केन एम। हैगरटी

4
कृपया इसके उपयोग को समझाने के बजाय --soft
iuridiniz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.