दिलचस्प पोस्ट
क्या सरल शब्दों में कोई मुझे संभव हो सकता है यदि संभव हो तो उदाहरण के साथ आगंतुक पैटर्न का उद्देश्य सी # के लिए गलत ऑपरेटर क्या है? सी # में गतिशील सरणी पायथन में एक मैट्रिक्स को स्थानांतरित करें जावा स्ट्रिंग्स: तुलना करें () बनाम बराबर () सी # अगर / फिर डिबग बनाम रिलीज के लिए निर्देश रेंज क्यों काम करती है, लेकिन सेल नहीं? लिनक्स में स्थानीय फ़ंक्शन कॉल्स का पता लगाने के लिए उपकरण सी # 4.0 वैकल्पिक आउट / रेफ़ तर्क MongoDB – व्यवस्थापक उपयोगकर्ता अधिकृत नहीं है MySQL ट्रिगर में INSERT ऑपरेशन को कैसे रद्द करें? संस्करण संख्या कैसे करें? jQuery: ब्राउज़र की विशिष्ट कोड के बिना इनपुट में पाठ की कर्सर स्थिति प्राप्त करें? हेडलेस लिनक्स पर "एंड्रॉइड अपडेट एसडीके" सी में थोड़ा endian करने के लिए बड़े endian कन्वर्ट

आंशिक रूप से git के साथ एक प्रतिबद्धता चेरी उठा

मैं 2 अलग-अलग शाखाओं पर काम कर रहा हूं: रिलीज और विकास
मैंने देखा कि मुझे अभी भी कुछ बदलावों को एकीकृत करने की आवश्यकता है जो रिहाई शाखा को विकास शाखा में वापस करने के लिए प्रतिबद्ध थे।
समस्या यह है कि मुझे सभी चीजों की ज़रूरत नहीं है, कुछ फ़ाइलों में केवल कुछ कर्कश हैं, इसलिए एक सरल

git cherry-pick bc66559 

चाल नहीं करता
जब मैं ऐसा करता हूं

 git show bc66559 

मैं अंतर देख सकता हूं लेकिन वास्तव में मेरे वर्तमान काम के पेड़ को आंशिक रूप से लागू करने का एक अच्छा तरीका नहीं जानता।
कोई सुझाव बहुत स्वागत होगा!

वेब के समाधान से एकत्रित समाधान "आंशिक रूप से git के साथ एक प्रतिबद्धता चेरी उठा"

आप जिस मुख्य चीज को यहां चाहते हैं वह है git add -p ( -p ) – के लिए एक पर्याय है। यह सामग्री की जांच करने के लिए एक इंटरैक्टिव तरीका प्रदान करता है, आपको यह तय करने का मौका देता है कि क्या प्रत्येक हंक में जाना चाहिए, और यदि आपको आवश्यक हो तो पैच को मैन्युअल रूप से संपादित करने दें।

चेरी-पिक के साथ संयोजन में इसका इस्तेमाल करने के लिए:

 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 reset <path>... का उपयोग केवल उन्हीं फाइलों को छोड़ सकते हैं।)

यदि आवश्यक हो तो आप निश्चित रूप से add -p को add -p विशिष्ट मार्ग प्रदान कर सकते हैं। यदि आप एक पैच के साथ शुरू कर रहे हैं तो आप cherry-pick को apply कर apply


यदि आप वास्तव में git cherry-pick -p <commit> (उस विकल्प में मौजूद नहीं) चाहते हैं, तो आप इसका उपयोग कर सकते हैं

 git checkout -p <commit> 

यह आपके द्वारा निर्दिष्ट किए गए प्रतिबद्धता के विरुद्ध मौजूदा प्रतिबद्धता को अलग करेगा, और आप उस अंतर से कुत्ते को व्यक्तिगत रूप से लागू करने की अनुमति देगा यह विकल्प अधिक उपयोगी हो सकता है यदि आप में जो चाल चल रहे हैं, तो आप जिन चीजों में दिलचस्पी नहीं रखते हैं, उनके हिस्से में मर्ज ट्रिब्यूट होते हैं। (ध्यान दें, हालांकि, यह checkout cherry-pick से अलग है: checkout को <commit> लागू करने का प्रयास करता है। चीजें पूरी तरह से, cherry-pick अपने माता-पिता से विशिष्ट प्रतिबद्ध की भिन्नता को लागू करती है। इसका मतलब यह है कि checkout केवल उस प्रतिबद्धता से अधिक लागू कर सकती है, जो आप जितना चाहें उतना अधिक हो सकता है।)

मुझे पता है कि मैं एक पुराने प्रश्न का जवाब दे रहा हूं, लेकिन ऐसा लगता है कि इस पर अन्तरक्रियात्मक रूप से जाँच करने के लिए एक नया तरीका है:

 git checkout -p bc66559 

क्या मैं दूसरे जीआईटी के कबीले से बातचीत कर सकता हूँ?

आप चाहते हैं कि परिवर्तनों को आप चाहते हैं कि शाखा के शीर्ष पर हैं, गिट चेकआउट का उपयोग करें

एक एकल फाइल के लिए:

 git checkout branch_that_has_the_changes_you_want path/to/file.rb 

कई फाइलें सिर्फ डेज़ी श्रृंखला के लिए:

 git checkout branch_that_has_the_changes_you_want path/to/file.rb path/to/other_file.rb 

माइक मॉन्ककीविज़ पर बिल्डिंग का उत्तर देने के लिए आप आपूर्ति किए गए शाए 1 / शाखा से चेकआउट करने के लिए एक या अधिक फ़ाइलों को भी निर्दिष्ट कर सकते हैं।

 git checkout -p bc66559 -- path/to/file.java 

इससे आप फ़ाइल के अपने वर्तमान संस्करण पर लागू होने वाले परिवर्तनों को अंतःक्रियापूर्वक चुन सकेंगे।

अगर "आंशिक रूप से चेरी का चयन" का अर्थ है "फाइलों के भीतर, कुछ परिवर्तनों को चुनना है लेकिन दूसरों को छोड़ना", यह git stash में लाकर किया जा सकता है:

  1. पूर्ण चेरी का चयन करो
  2. git reset HEAD^ पूरे चेरी-चुने हुए परिवर्तन को अस्थिर कार्यरत परिवर्तनों में बदलने के लिए।
  3. अब git stash save --patch : git stash save --patch अवांछित सामग्री का चयन करें
  4. गीट आपके कार्यशील प्रतिलिपि से स्टैश किए गए बदलावों को वापस चलाता है
  5. git commit
  6. अवांछित परिवर्तनों के छिपाने की जगह फेंको: git stash drop

युक्ति: यदि आप अवांछित बदलावों का एक नाम देते हैं तो: git stash save --patch junk तो अगर आप (7) करने के लिए भूल जाते हैं, तो बाद में आप यह पता लगा सकते हैं कि यह क्या है।