2013-04-17 8 views
22

पर एक प्रतिबद्धता लागू करें पिछली प्रतिबद्धता द्वारा पेश किए गए प्रभाव की जांच करने के लिए, मैं इसे प्रतिलिपि बनाना चाहता हूं- इसे कोड के साथ अपने काम करने की प्रतिलिपि और बेवकूफ पर लागू करना चाहता हूं।रिवर्स काम करने की प्रतिलिपि

मैंने पैच बनाने और लागू करने के आसपास वर्कफ़्लो के साथ प्रबंधित किया, लेकिन आश्चर्य है कि यह आसान किया जा सकता है या नहीं।

git checkout -b "tmp-fiddle" 
git diff -R -p d9fd2bb^ d9fd2bb > patch_to_examine.patch 
# Manually edit the patch a little 
git apply patch_to_examine.patch 

ध्यान दें कि मैं git revert या git rebase -i पर इन के बाद से नहीं देख रहा हूँ या तो परिचय होगा एक नया प्रतिबद्ध या इतिहास बदल: मैं केवल परिवर्तन d9fd2bb में पेश होना चाहते हैं मेरे वर्तमान कार्यशील प्रतिलिपि करने के लिए संयुक्त राष्ट्र-आवेदन किया।

+0

मैन्युअल संपादन आप क्या कर रहे हैं? –

+0

वह पैच साफ़ रूप से लागू नहीं था; व्हाइटस्पेस के बारे में चेतावनियां भेजना। दुर्भाग्यवश, – berkes

उत्तर

35

कैसे git revert -n?

-n 
--no-commit 

आमतौर पर आदेश स्वचालित रूप से लॉग संदेशों बताते हुए जो प्रतिबद्ध कर दिए गए थे प्रतिबद्ध के साथ कुछ प्रतिबद्ध बनाता है। यह झंडा नामित कामों को आपके काम करने वाले पेड़ और सूचकांक में वापस करने के लिए आवश्यक परिवर्तनों को लागू करता है, लेकिन यह काम नहीं करता है। इसके अतिरिक्त, जब इस विकल्प का उपयोग किया जाता है, तो आपकी अनुक्रमणिका को HEAD प्रतिबद्धता से मेल नहीं खाते हैं। वापसी आपके सूचकांक की शुरुआत स्थिति के खिलाफ की जाती है।

यह उपयोगी है जब एक से अधिक में आपकी अनुक्रमणिका में एक से अधिक प्रभाव 'प्रभाव को वापस लाया जाता है।

+1

दुर्भाग्यवश, यह तब तक काम करता है जब तक आपकी कार्यशील प्रति में प्रतिबद्धता से प्रभावित किसी भी फाइल में कोई संशोधन नहीं होता है (हालांकि इसमें अन्य फ़ाइलों में परिवर्तन हो सकते हैं)। मुझे लगता है, इस तरह के मामले में आपको 'गिट स्टैश चाहिए; गिट रिवर्ट -एन ; गिट स्टैश पॉप 'और संघर्षों को हल करें (यदि कोई हो)। – arekolek

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