2013-01-09 20 views
5

मैंने अपनी मास्टर शाखा में कुछ बदलाव किए हैं जिन्हें मैं अब फिट नहीं देख पा रहा हूं। तर्क के लिए, मेरे पास 791fda4e1ac0e1a393e01340bf0fba3f333a73ff नामक एक प्रतिबद्ध हैश है कि मैं अब अपना सिर बनाना चाहता हूं, क्योंकि जब सब कुछ रेपो में स्थिर था। , फिर भीगिट: HEAD को पिछली प्रतिबद्धता पर वापस ले जाएं

git reset 791fda4e1ac 
git reset --soft [email protected]{1} 
git commit -m "Revert to 791fda4e1ac" 
git reset --hard 

, जब मैं एक git push origin करते हैं, मैं अस्वीकार कर दिया हो क्योंकि मूल सोचता है कि यह एक गैर fastforward धक्का दिया गया है:: मैं निम्न कार्य करने की कोशिश की है

! [rejected]  master -> master (non-fast-forward) 

क्या का सही तरीका है मेरे हेड को वापस हैश 791fda4e1ac प्रतिबद्ध करने के लिए और वहां मूल सर्वर भी प्राप्त कर रहा है?

उत्तर

10

यह अस्वीकार कर दिया गया है क्योंकि यह गैर-तेज़-आगे है - यह इतिहास को छोड़ देता है अन्य लोगों ने बनाया हो सकता है।

एक नई प्रतिबद्धता बनाने के बजाय git revert का उपयोग करें जो मौजूदा लोगों के प्रभाव को कम करता है।

या, यदि आप सुनिश्चित हैं कि कोई भी आपकी रिपोजिटरी का उपयोग नहीं कर रहा है और आपको भविष्य में आने वाले लोगों की परवाह नहीं है, तो आगे बढ़ें और चेतावनी को अनदेखा करने के लिए git push -f पर जाएं।

+1

इस मामले में 'गिट रिवर्ट' कमांड कैसा दिखता है? – drevicko

+1

@drevicko विभिन्न संभावनाओं के लिए http://stackoverflow.com/questions/1463340/revert-multiple-git-commits देखें। मुझे http://stackoverflow.com/questions/1463340/revert-multiple-git-commits#comment19940208_11743042 सबसे अच्छा लगता है। – CletusW

2

आपको मजबूर पुश करना है (git push -f origin)।

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