2012-01-26 17 views
11

मुझे किसी संग्रह को एक गिट रिपोजिटरी में काम करने का एक सेट निर्यात करने की आवश्यकता है। मैं यह कैसे कर सकता हूं? svn का उपयोग करके, मैं ज़िप और निर्यात करने के लिए निर्यात कर सकता हूं।गिट: विशिष्ट प्रतिबद्धता पुनर्प्राप्त करें

+0

क्या आपका मतलब यह है कि इन कामों का निर्यात भिन्नता है? – CharlesB

+0

हाँ क्षमा करें अब मुझे एहसास है कि समझना आसान नहीं था। मुझे 2 कामों के बीच सबसे अद्यतन फ़ाइलों के साथ एक संग्रह की आवश्यकता है। – user1170896

उत्तर

18

एक निश्चित करने के लिए भंडार को निर्यात करने के लिए प्रतिबद्ध:

git archive -o export.zip <COMMIT>। उस प्रतिबद्ध संख्या के साथ <COMMIT> को बदलें जिसे आप निर्यात करना चाहते हैं।

दो प्रतिबद्ध के बीच एक पैच बनाने के लिए:

git diff COMMIT1 COMMIT2 > patch.txt

+0

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

+0

उत्तर समायोजित। – tobiasbayer

+0

ठीक है ... लेकिन एक पैच किसी अन्य भंडार में उपयोग के लिए है। इसमें यह समझने के लिए मार्कअप शामिल है कि संशोधन कहां किए गए हैं। मुझे निर्दिष्ट प्रतिबद्धताओं के बीच केवल संशोधित (अद्यतित) फ़ाइलों के साथ एक संग्रह की आवश्यकता है। – user1170896

10

Git प्रत्येक के लिए प्रतिबद्ध के लिए एक पैच बनाने का एक आसान तरीका है। यद्यपि यह मूल रूप से पैच को प्रारूपित करने के तरीके के रूप में था, ताकि उन्हें ईमेल के माध्यम से भेजा जा सके, वे बदलावों का एक सेट निकालने का एक आसान तरीका हैं।

जो आदेश आप चाहते हैं वह git format-patch है और जिस तरह से आप इन स्वरूपित पैच को गिट में लागू करते हैं, वह git am कमांड के साथ है।

उदाहरण के लिए आप आप दो करता C1 और Cn कि आप Git पैच का एक सेट के रूप में निर्यात करना चाहते हैं यदि आप केवल जरूरत है:

git format-patch -k C1..Cn 

यह (अपने वर्तमान निर्देशिका में गिने पैच का एक सेट का निर्माण करेगा)। प्रत्येक पैच प्रतिबद्धता का एक अंतर होगा, साथ ही प्रतिबद्ध जानकारी (शीर्षक, टिप्पणी, लेखक, दिनांक, आदि)।

यह दो कामों के बीच एक साधारण diff फ़ाइल से बहुत अधिक है जो आपको प्रदान करेगा।

+0

मुझे लगता है कि यह 'गिट प्रारूप-पैच -के सी 1 ~ .. सीएन' की बजाय' गिट प्रारूप-पैच -के सी 1..एनएन 'की आवश्यकता है, क्योंकि सीमा के बाईं तरफ _exclusive_ है, इसलिए आपको देना होगा पहली प्रतिबद्धता के _parent_ ('~')। – nh2

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