2012-04-05 3 views
6

मैं हाल ही में परिवर्तित फ़ाइल का संग्रह बनाने के लिए एक सरल समाधान की तलाश में हूं।बदले गए फ़ाइलों का संग्रह बनाने के लिए गिट का उपयोग

जब मैंने इसे GIT बुश में चला रहा google

git archive -o update.zip HEAD $(git diff --name-only HEAD^) 

से इस साधारण आदेश मिलता है, यह कह घातक कह रहता है:

+1

कौन सा आदेश है कि से आता है? ('Git diff --name-only HEAD^'का आउटपुट क्या है? आप एक वैध भंडार में हैं, है ना?) – Cascabel

+0

गिट diff --name-only HEAD^बदले गए फ़ाइल की एक सूची आउटपुट करेगा जिसे मैं चाहूंगा पुरालेख। मैंने एक परीक्षण भंडार के साथ इस आदेश का परीक्षण किया है, यह निष्कासित के रूप में काम करता है। यह मेरे असली एएसपीनेट प्रोजेक्ट रिपोजिटरी – Kuroro

+0

में काम नहीं करता है, मुझे संदेह है कि कुछ संग्रह नहीं कर सकते हैं? द्विआधारी? – Kuroro

उत्तर

11

मैं में this answer उपयोग कर रहा हूँ एक मान्य ऑब्जेक्ट नाम वह मामला जो मुझे

tar czf changed-files.tar.gz `git diff --name-only [diff options]` 

उदाहरण के लिए, बनाने के लिए ई एक संग्रह पिछले चार संशोधन में बदल फ़ाइलों से युक्त, मैं

tar czf changed-files.tar.gz `git diff --name-only HEAD~4..` 

करना चाहते हैं इसका मतलब यह है निश्चित रूप से –     – कि HEAD~4 मौजूद वास्तव में है।

+0

ईकेस, यह इंगित करने के लिए धन्यवाद कि HEAD इस तरह से उपयोग कर सकता है। – Kuroro

+0

-1: यह समाधान केवल तभी काम करता है जब आपके द्वारा चुने गए प्रतिबद्धताओं के बावजूद भिन्नता के भीतर की फ़ाइलें HEAD पर मौजूद हों। –

1

मैं दिमाग में इस अन्य नाम का उपयोग नहीं नई फ़ाइलें शामिल करने के लिए:

alias gittar='tar -czvf working-files.tgz \ 
       $(git status -s | sed -r "s/..(.*)/\1 /")' 
संबंधित मुद्दे