मुख्य बात जो आप यहाँ चाहते हैं, वह है git add -p
( -p
एक पर्यायवाची शब्द --patch
)। यह सामग्री में जांच करने के लिए एक इंटरैक्टिव तरीका प्रदान करता है, जिससे आपको यह तय करने में मदद मिलती है कि प्रत्येक हंक को अंदर जाना चाहिए, और यहां तक कि आवश्यक होने पर आपको मैन्युअल रूप से पैच को संपादित करने की अनुमति देता है।
चेरी-पिक के संयोजन में इसका उपयोग करने के लिए:
git cherry-pick -n <commit> # get your patch, but don't commit (-n = --no-commit)
git reset # unstage the changes from the cherry-picked commit
git add -p # make all your choices (add the changes you do want)
git commit # make the commit!
(मुझे याद दिलाने के लिए टिम हेनिगन को धन्यवाद कि git-cherry-pick में एक andno-प्रतिबद्ध विकल्प है, और फेलिक्स राबे के लिए धन्यवाद कि आपको रीसेट करने की आवश्यकता है! यदि आप केवल कुछ चीजों को कमिट से बाहर छोड़ना चाहते हैं! , आप git reset <path>...
बस उन फ़ाइलों को अस्थिर करने के लिए उपयोग कर सकते हैं ।)
add -p
यदि आवश्यक हो तो आप निश्चित रूप से विशिष्ट पथ प्रदान कर सकते हैं । यदि आप एक पैच के साथ शुरू कर रहे हैं आप के cherry-pick
साथ बदल सकता है apply
।
यदि आप वास्तव में एक चाहते हैं git cherry-pick -p <commit>
(वह विकल्प मौजूद नहीं है), तो आप उपयोग कर सकते हैं
git checkout -p <commit>
यह आपके द्वारा निर्दिष्ट किए गए वचन के विरुद्ध वर्तमान प्रतिबद्धता को अलग करेगा, और आपको व्यक्तिगत रूप से उस भिन्न से भिन्न लागू करने की अनुमति देगा। यह विकल्प अधिक उपयोगी हो सकता है यदि आप जिस कमेटी में खींच रहे हैं वह उस कमिट में उस हिस्से में विलय कर रही है जिसमें आप दिलचस्पी नहीं ले रहे हैं (ध्यान दें, हालांकि, इससे checkout
भिन्न है cherry-pick
: पूरी तरह से सामग्री checkout
लागू करने की कोशिश करता है , भिन्नता लागू करता है । यह माता-पिता से निर्दिष्ट प्रतिबद्ध है। इसका मतलब है कि यह केवल उस कमिट से अधिक लागू हो सकता है, जो आप चाहते हैं कि तुलना में अधिक हो सकता है।)<commit>
cherry-pick
checkout