मेरे पास BranchA
है जो BranchB
से 113 है।मैं गिट में एक शाखा से दूसरे शाखा में एक विशिष्ट प्रतिबद्धता कैसे विलय करूं?
लेकिन मुझे केवल अंतिम 10 या BranchA
से BranchB
में विलय करना है।
क्या ऐसा करने का कोई तरीका है?
मेरे पास BranchA
है जो BranchB
से 113 है।मैं गिट में एक शाखा से दूसरे शाखा में एक विशिष्ट प्रतिबद्धता कैसे विलय करूं?
लेकिन मुझे केवल अंतिम 10 या BranchA
से BranchB
में विलय करना है।
क्या ऐसा करने का कोई तरीका है?
git cherry-pick <commit>
कमांड आपको एक ही प्रतिबद्धता (जो भी शाखा से) लेने की अनुमति देता है और, अनिवार्य रूप से, इसे अपनी कार्यरत शाखा में पुन: प्राप्त करें।
Chapter 5 of the Pro Git book explains it better than I can, आरेखों और इस तरह के साथ पूर्ण; "रीबेजिंग और चेरी पिकिंग वर्कफ़्लोज़" नामक अनुभाग की तलाश करें। (The chapter on Rebasing भी अच्छी पढ़ाई है।)
आखिरकार, कुछ good comments on the cherry-picking vs merging vs rebasing in another SO question हैं।
प्रश्न: प्रतिबद्ध करें 'ए' को' मास्टर 'से ब्रांच किया गया है और आप इस पर कुछ काम करते हैं, जिससे बच्चा 'ई' के माध्यम से' बी 'बना देता है। कहें 'ई' में केवल' 1' 'से जोड़ा गया है। यदि आप 'मास्टर' में ई-चेरी चुनते हैं, तो क्या यह 'ए' से 'ई' के माध्यम से' मास्टर 'शाखा में * सभी * परिवर्तनों को लागू करता है, या यह * केवल *' D' से परिवर्तन लागू करता है 'ई' के लिए, अर्थात्, यह केवल 1 लाइन को 'मास्टर' में जोड़ता है? यदि मामला पूर्व है, तो मैं बाद वाले को कैसे प्राप्त करूं? (मैन्युअल रूप से प्रतिलिपि बनाने और पेस्ट करने के अलावा) – chharvey
गिट चेरी-पिक-एन
आप वांछित प्रतिबद्धताओं को चुन सकते हैं।
मैंने पाया इस How to cherry-pick multiple commits
मैं स्वीकार किए जाते हैं जवाब करना होगा।
क्या आप विवरण जोड़ सकते हैं? मैं उस शब्दावली से परिचित नहीं हूं – NullVoxPopuli
@ टेलिंडीशॉप मैं उन्हें ढूंढ रहा हूं – hvgotcodes
@ टेलिंडीशॉप आप बस क्यों नहीं आ रहे हैं? – hvgotcodes
यदि शाखा ए को रिमोट पर धक्का नहीं दिया गया है तो आप rebase
और फिर बस merge
का उपयोग करके काम को फिर से व्यवस्थित कर सकते हैं। merge
rebase
से अधिक संभव होने पर उपयोग करना बेहतर है क्योंकि यह डुप्लिकेट काम नहीं करता है।
git checkout BranchA
git rebase -i HEAD~113
... reorder the commits so the 10 you want are first ...
git checkout BranchB
git merge [the 10th commit]
स्रोत: https://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Integrating-Contributed-Work
अन्य तरीके से एक से दूसरे शाखा से शुरू काम ले जाने के लिए करने के लिए है यह चेरी लेने। गिट में एक चेरी-पिक एक ही प्रतिबद्धता के लिए एक रिबेस की तरह है। यह उस पैच को लेता है जो एक प्रतिबद्धता में पेश किया गया था और उस शाखा पर इसे फिर से लागू करने का प्रयास करता है जिस पर आप वर्तमान में हैं। यह उपयोगी है यदि आपके पास किसी विषय शाखा पर कई काम हैं और आप उनमें से केवल एक को एकीकृत करना चाहते हैं, या यदि आपके पास केवल एक विषय शाखा पर एक प्रतिबद्ध है और आप चेरी को चलाने के बजाय इसे चुनना पसंद करेंगे।
आप अपने गुरु शाखा में e43a6 प्रतिबद्ध खींचने के लिए चाहते हैं, आप चला सकते हैं
$ git cherry-pick e43a6
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index fails."
3 files changed, 17 insertions(+), 3 deletions(-)
यह वही परिवर्तन किया खींचती है: उदाहरण के लिए, आप एक परियोजना है कि इस तरह दिखता है लगता है e43a6 में, लेकिन आपको एक नया प्रतिबद्ध SHA-1 मान मिलता है, क्योंकि लागू तिथि अलग है। अपने इतिहास इस तरह दिखता है:
अब आप अपने विषय शाखा को हटाने और प्रतिबद्ध आप में खींचने के लिए नहीं करना चाहता था ड्रॉप कर सकते हैं
के संभावित डुप्लिकेट [कैसे मर्ज करने के लिए एक विशिष्ट में करते हैं। गिट] (http://stackoverflow.com/questions/881092/how-to-merge-a- विशिष्ट-commit-in-git) – chharvey