2010-06-08 22 views
10

मैं गिट के लिए बहुत नया हूं और मुझे थोड़ी सी समस्या है।गिट से सभी बदली/गयी फ़ाइलों को कैसे निर्यात करें?

SVN [यह एक केवल मूर्ख और चाचा अल्बर्ट द्वारा घोड़े कहानी की तरह लगता है .. "युद्ध के दौरान ..."] जब मैं अपने नवीनतम परिवर्तनों के साथ एक उत्पादन साइट को अद्यतन करना चाहता था में, मैं एक ऐसा चाहते हैं टीएसवीएन में diff और दो संशोधनों के बीच सभी बदली/जोड़ा फ़ाइलों को निर्यात करें। जैसा कि आप कल्पना कर सकते हैं, उन फ़ाइलों को बाद में उत्पादन साइट पर लेना आसान था।

हालांकि, ऐसा लगता है कि मैं गिट में "निर्यात बदली गई फाइलें" विकल्प नहीं ढूंढ पा रहा हूं। मैं एक diff और देख सकता हूं परिवर्तन, मैं फ़ाइलों की सूची प्राप्त कर सकता हूं, लेकिन मैं वास्तव में उन्हें निर्यात नहीं कर सकता। क्या ऐसा करने का कोई उचित तरीका है? क्या मुझे कुछ आसान याद आ रही है?

बस एक बार फिर स्पष्ट करने के लिए, मुझे सभी दो विशिष्ट प्रतिबद्धताओं के बीच परिवर्तन निर्यात करने की आवश्यकता है।

अग्रिम धन्यवाद!

उत्तर

14

आप उन्हें कैसे निर्यात करना चाहते हैं? आप कहते हैं कि आपके पास पहले से ही एक सूची है; आपको और क्या चाहिए? मान आप के साथ git diff --name-only ...

git archive --output=<file> HEAD $(git diff --name-only ...) 

tar -czf <file> $(git diff --name-only ...) 

cp $(git diff --name-only ...) <export-directory> 

कुछ इस तरह अपनी सूची हो रही है?

या आप भी diff का उपयोग कर सकते हैं - इसे git apply (या यहां तक ​​कि patch, मुझे विश्वास है) के साथ लागू किया जा सकता है।

git diff --diff-filter=ACMRT --name-only HEAD | xargs tar -rf export.tar 

आप ट्रैक न किए गए फ़ाइलें जोड़ने के लिए पहले से निम्नलिखित निष्पादित करने के लिए आवश्यकता हो सकती है, अगर आप की जरूरत है:

+1

पहला विकल्प मेरे लिए काम कर रहा है! आदर्श रूप से, मैं सीपी संस्करण का उपयोग करता हूं लेकिन फ़ोल्डर संरचना को रखता हूं (मुझे लगता है कि यह गिट diff के लिए पैरामीटर का मामला है?) मुझे विश्वास नहीं है कि यह इतना आसान है .. धन्यवाद! –

+0

बस अपना संपादन देखा .. दुर्भाग्य से, मैं 'गिट लागू' या 'पैच' का उपयोग नहीं कर सकता, मेरे पास केवल साइट पर एफ़टीपी पहुंच है: -/ –

+0

@dr हनिबाल लेक्चर: हाँ, मैंने सोचा कि आपको वास्तविक रूप से गुजरने की आवश्यकता है फ़ाइलें। और हाँ, कमांड प्रतिस्थापन ('$ (...)') उन महत्वपूर्ण चीजों में से एक है जो लिनक्स शैल में सब कुछ संभव (और सरल) बनाता है। – Cascabel

2

here में उत्तरों की कुछ से उधार, यहाँ फ़ाइलों को कार्यक्षेत्र में संशोधित कर रहे हैं निर्यात करने के लिए एक और तरीका है उन्हें diff में शामिल करने के लिए:

git add * 

[यह Windows में Git-बैश में काम करता है]

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