2013-02-13 16 views
17

में कुछ प्रकार की फ़ाइलों में असामान्य परिवर्तनों को वापस कैसे करें मेरे पास मेरे गिट भंडार में संशोधित फ़ाइलों का एक समूह है और उनमें से बड़ी संख्या xml फ़ाइलें हैं। मैं केवल एक्सएमएल फाइलों के परिवर्तन (रीसेट संशोधनों) को कैसे वापस कर सकता हूं?गिट

git checkout -- "*.xml" 

उद्धरण अपने खोल पाएगा केवल करने के लिए आदेश का विस्तार करने के:

उत्तर

2

आप अपने सभी उत्तरों के लिए धन्यवाद, लेकिन मैं पाया है, मेरे लिए, सबसे सटीक समाधान:

git diff --name-only -- '*.xml' | sed 's, ,\\&,g' | xargs git checkout -- 

sed उपयोगकर्ता स्थान जो xargs परेशान और सब कुछ बहुत तेजी से और सही काम कर रहा है से बचने के लिए है।

+0

मेरा उत्तर देखें, आपको इन सभी की आवश्यकता नहीं है :) – CharlesB

37

आप find या sed, आप वाइल्डकार्ड के रूप में Git उन्हें समझता है उपयोग कर सकते हैं (अपने खोल पर निर्भर नहीं करता) की जरूरत नहीं है इसके निष्पादन से पहले मौजूदा निर्देशिका में फ़ाइलें।

तुम भी (बैश के साथ) खोल ग्लोब विस्तार निष्क्रिय कर सकते हैं:

set -f 
git checkout -- *.xml 

यह, ज़ाहिर है, irremediably अपने परिवर्तनों को मिटा देगा!

+1

'*/*। Xml'" सभी निर्देशिकाओं में xml फ़ाइलें "नहीं है। – wRAR

+0

@wRAR इसे मिला ... गिट में ग्लोबिंग बहुत अच्छी तरह से प्रलेखित नहीं है – CharlesB

+1

'**/*। Xml' आपके खोल ग्लोब का उपयोग करेगा, इसलिए हटाई गई फ़ाइलों की जांच नहीं की जाएगी, लेकिन अगर यह केवल परिवर्तन हो, तो काम। – Reactormonk

-1
find . -name '*.xml' -print0 | xargs -0 git checkout HEAD 

या कुछ बराबर है, तो अपने सिस्टम find और xargs जरूरत नहीं है। या zsh में या किसी अन्य शेल को रिकर्सिव ग्लोबिंग के इस रूप के साथ।