2010-06-10 14 views
34

एक टीम के सदस्य ने पिछली रात रिमोट रेपो में अवांछित ज़िपों के आधे गग को धक्का दिया जब वे भीड़ में थे। हाँ ... ओह।क्या मैं अंतिम गिट पुश को पूर्ववत कर सकता हूं?

किसी ने भी तब से खींचा या प्रतिबद्ध नहीं किया है।

आदर्श रूप में मैं केवल 'पूर्ववत' करना चाहता हूं जो हुआ।

मैं फिल्टर शाखा पर ध्यान दिया है और इस तरह

git filter-branch --tree-filter 'rm -f *.zip' HEAD 

कुछ कोशिश की सोच रहा था, लेकिन वह स्थानीय होगा, और मैं यह कैसे दूरस्थ रेपो पर प्रत्यक्ष करने के लिए को समझ नहीं सकता।

क्या हुआ क्या पूर्ववत करने का एक आसान तरीका है? अगर वह अपनी आखिरी प्रतिबद्धता में संशोधन करती है और फिर धक्का देती है तो वह पुश को पूर्ववत कर देगी - यानी वास्तव में उन फ़ाइलों को इतिहास से हटा दें?

जाहिर है कि अगर वह उन्हें हटा देती है, तो फिर से काम करती है और फिर धक्का देती है जो तब भी रेपो में सामग्री छोड़ देती है, जो कि कोई अच्छा नहीं है।

+0

ऐसे प्रश्न हैं जो शायद वे मदद कर सकते हैं: http://stackoverflow.com/questions/1270514/undoing-a-git-push – Don

उत्तर

53

धन्यवाद डॉन, मैंने इसे देखा होगा लेकिन किसी भी तरह से यह महसूस नहीं हुआ कि यह मेरी समस्या को ठीक करता है, क्योंकि मेरे पास केवल एक शाखा है।

मैंने किया:

git push -f origin 5910117a8fc2c71334251465b54d6d9daeb28d1c:master 

और यह सब वापस कैसे यह था करने के लिए।

+0

जो ठीक काम करता है। आप इस बारे में सोचने के लिए एक पल लेना चाहेंगे कि किसी को भी ऐसा करने में सक्षम होने के लिए रेपो तक पहुंचने के लिए अच्छा है या नहीं :) रिमोट रेपो पर सीधे जाकर और अपनी मास्टर शाखा को स्थानांतरित करने के लिए गिट रीसेट का उपयोग करना एक और विकल्प है जो आमतौर पर कर सकता है हुक में लागू किसी भी अनुमति जांच बाईपास। – araqnid

+7

आप जोड़ सकते हैं: Git --hard 5910117a8fc2c71334251465b54d6d9daeb28d1c सुनिश्चित करें कि आपके स्थानीय प्रति भी उस विशिष्ट पुनरावलोकन में वापस कर रहा है कर देगा कि रीसेट (अन्यथा, यह लगेगा अपने स्थानीय रेपो जैसे दूरस्थ से अलग है)। –

+12

स्पष्टीकरण: शा हैश को अंतिम अच्छी प्रतिबद्धता का हैश होना चाहिए - आपकी खराब प्रतिबद्धता धक्का नहीं – philfreo

5

मुझे लगता है कि

git reset --hard HEAD^ 
git push -f 

चाल करना चाहिए: यह पिछले करने के लिए अपने स्थानीय चेकआउट रीसेट करता है (यह मानते हुए पिछले एक के बाद एक आप ड्रॉप करना चाहते हैं) और बल यह दूरदराज के भंडार के लिए धक्का के लिए प्रतिबद्ध।

संबंधित मुद्दे