2010-01-31 4 views
8

यदि मेरे पास गिट में मेरी कार्य निर्देशिका में एकल फ़ाइल में असामान्य परिवर्तनों का एक समूह है, तो इन परिवर्तनों में चुनिंदा चुनने और चुनने का सबसे आसान तरीका क्या है?गिट में "चेरी पिक" को किसी व्यक्तिगत फ़ाइल में असामान्य परिवर्तन करने का सबसे आसान तरीका क्या है?

मेरा वर्तमान तरीका फ़ाइल को "गिट diff" करना है, और फिर वास्तविक फ़ाइल के साथ diff मैन्युअल रूप से समीक्षा करना है। अगर मैं पुराने कोड के बिट्स को पुनर्स्थापित करना चाहता हूं, तो मैं diff से फ़ाइल में कॉपी और पेस्ट कर सकता हूं।

कुछ मामलों में यह बहुत आसान होगा अगर कोई एक फ़ाइल में परिवर्तनों को देखने और संपादित कर सकता है। उदाहरण के लिए, क्या कोई गिट कमांड है जो काम करने वाली फ़ाइल को किसी विवाद-रिज़ॉल्यूशन-जैसी प्रारूप में बदलने के लिए उपयोग कर सकता है - यानी "< < < <" असामान्य परिवर्तनों के आसपास प्रतीकों? इस तरह कोई एक फाइल से दूसरे में कट और पेस्ट किए बिना परिवर्तनों को चुन सकता है और चुन सकता है।

मुझे यकीन नहीं है कि इसे कैसे पूरा किया जाए क्योंकि यह तीन-तरफा (विलय) स्थिति नहीं है। इसके बजाय, यह दो तरह की स्थिति है, एक फ़ाइल में बदलावों के एक सेट के साथ (इसलिए कोई संघर्ष नहीं है)। धन्यवाद।

+0

आप जिसे चुन सकते हैं पर ट्यूटोरियल चुनिंदा के साथ "रीसेट" "गुप्त कोष" "जोड़ें", "मंच" (ऐड के रूप में ही), "चेकआउट", और। प्रत्येक एक -p विकल्प लेता है। (1.6.6 के रूप में) –

+0

धन्यवाद, विलियम। हां, गिट-चेकआउट के साथ उपयोग करने से गिट-चेकआउट के साथ -p मेरी विशेष स्थिति में मेरे लिए अधिक सुविधाजनक साबित हुआ। – cjerdonek

उत्तर

11

आप चुन सकते हैं कि कौन से शिकारी git add --patch द्वारा प्रतिबद्धता में जोड़ सकते हैं। यदि आप उस परिवर्तन को जोड़ना चाहते हैं तो यह आपको फ़ाइल के परिवर्तनों में प्रत्येक हंक के लिए पूछेगा। यदि आपके लिए एक विशेष हंक बहुत बड़ा है, तो आप इसे और भी विभाजित कर सकते हैं। git-add, --interactive पर एक और विकल्प है, जो आपको कई फाइलों के साथ काम करने देता है।

अधिक जानकारी के लिए, Google खोज से git-add man page, या this post देखें।

+0

धन्यवाद, आलोक और सब लोग। मैंने इसे आजमाया है, और इससे पहले कि मैं पहले क्या कर रहा था उससे निश्चित रूप से आसान है। हालांकि, यह अभी भी संघर्षों को हल करने की प्रक्रिया से कम सुविधाजनक लगता है। ऐसा लगता है कि इस तरह से जोड़ने से विलय के रूप में कम से कम आसान होना चाहिए। मुझे अभी भी आश्चर्य है कि क्या एक संघर्ष स्थिति बनाने में गिट को "चाल" करने का कोई तरीका है जहां "<<<<" लाइनों का उपयोग diff प्रारूप के बजाय किया जा सकता है: +/- /। – cjerdonek

+0

मैं सहमत हूं। यदि मंच पर शिकारी चुनने के लिए कई मौजूदा विलय टूल का उपयोग करने का कोई तरीका था, तो मौजूदा कमांडलाइन इंटरफेस पर एक बड़ा सुधार होगा जहां आप पाठ संकेतों का जवाब देना जारी रखते हैं। ट्यूटोरियल लिंक के लिए – davr

1

गिट ऐड-पैच के अलावा गिट ऐड-आई है: जिसे आप गिट एड-पैच पर एक परत के रूप में सोच सकते हैं।

git add --patch और git add -i

+0

उपरोक्त। धन्यवाद! –

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