2011-05-25 5 views
60

यहाँ फ़ोल्डर 'somefolder'कैसे एक विशेष के लिए एक फ़ोल्डर वापस लौटने के लिए एक पैच बनाने के द्वारा प्रतिबद्ध

$ git log somefolder 

commit 89cd 
More changes to somefolder 

commit ef47a 
Updating somefolder and other stuff 

commit e095 
Bugs fixed in somefolder 

मैं somefolder 'बग्स कुछ फ़ोल्डर "प्रतिबद्ध में तय करने के लिए वापस वापस करना चाहते हैं के लिए अपने इतिहास है।

के बाद से दूसरा somefolder के बाहर शामिल परिवर्तन हो, मैं जाने के लिए इस के लिए प्रतिबद्ध नहीं करना चाहती।

मुझे लगता है कि सबसे सुरक्षित तरीका e095 और 89cd प्रतिबद्ध के बीच एक अंतर/पैच कुछ करने के लिए सिर्फ लागू होने वाला बनाने के लिए किया जाएगा फ़ोल्डर, और फिर उस पैच को लागू करें। मैं यह कैसे कर सकता हूं?

उत्तर

107

आप अपने भंडार को किसी विशिष्ट स्थिति में अपडेट करने के लिए git checkout का उपयोग कर सकते हैं।

git checkout e095 -- somefolder 

diff पैदा करने के बारे में अपने प्रश्न का सवाल है, वह भी काम करेगा। बस वापस e095 करने के लिए अपने वर्तमान स्थिति से जाने के लिए diff उत्पन्न:

git diff 89cd..e095 -- somefolder 
+17

इस फ़ाइलें नहीं निकाली जाती जो उस प्रतिबद्धता में जोड़े गए थे, 'गीट रीसेट ई0 9 5 - कुछ/फ़ोल्डर' के बजाय – shime

9

आप git reset उपयोग कर सकते हैं सूचकांक होगा जो भी अपने आप पर है कि अधिक हाल ही में प्रतिबद्ध में जोड़ा गया था फ़ाइलें (git checkout को निकालना, पुनर्स्थापित करने के लिए नहीं है ऐसा करने):

git reset e095 -- somefolder 

हालांकि git reset काम कर प्रतिलिपि को अपडेट नहीं करता है और --hard विकल्प फ़ोल्डरों के साथ काम नहीं करता। तो फिर git checkout का उपयोग काम कर सूचकांक के रूप में कॉपी ही बनाने के लिए:

git checkout -- somefolder 

और फिर अगर आप भी किसी भी फाइल को हटाना चाहते हैं जोड़ा तुम भी कार्य करने की जरूरत है:

git clean -fd somefolder 
+0

का उपयोग करें जब यह निर्देशिका नई फाइलें शामिल करती है तो यह उत्तर मेरे लिए काम करता है। – Yahoho

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