एक विशिष्ट प्रतिबद्ध तक मर्ज करें


372

मैंने git में ब्रांच newbranchसे नाम से एक नई ब्रांच बनाई master। अब मैं कुछ काम किया और मर्ज करना चाहते है newbranchकरने के लिए master; हालाँकि, मैंने कुछ अतिरिक्त बदलाव किए हैं newbranchऔर मैं newbranchचौथे-से-अंतिम तक के लिए विलय करना चाहता हूं master

मैंने उपयोग किया cherry-pickलेकिन यह सही विकल्पों का उपयोग करने के लिए संदेश दिखाता है:

git checkout master    
git cherry-pick ^^^^HEAD newbranch

क्या मैं mergeइसके बजाय इसे करने के लिए गिट का उपयोग कर सकता हूं ?

git merge newbranch <commitid>

जवाबों:


592

ज़रूर, masterशाखा में होने के नाते आपको बस इतना करना है:

git merge <commit-id>

जहां commit-idसे अंतिम हैश हैश है newbranchकि आप अपनी masterशाखा में प्राप्त करना चाहते हैं ।

आप किसी भी git कमांड के बारे में अधिक जानकारी प्राप्त कर सकते हैं git help <command>। यह मामला है कि यह है git help merge। और डॉक्स कह रहे हैं कि mergeकमांड के लिए अंतिम तर्क है <commit>..., इसलिए आप किसी भी कमिट या कई कमिट्स के संदर्भ में पास कर सकते हैं। हालांकि, मैंने कभी खुद को बाद में नहीं किया।


30
न केवल एक एकल के लिए प्रतिबद्ध है, लेकिन सभी के लिए पिछले करता हैcommit-id
दाउ

53
हाँ, यह सब से प्रतिबद्ध विलय करेंगे newbranchसमय अपने इतिहास से अलग के बाद से masterअप करने के लिए commit-idमें masterशाखा। आप git merge <commit-id>कुछ अनाम शाखा को विलय करने के बारे में सोच सकते हैं जो commit-idआपकी वर्तमान शाखा में समाप्त हो जाती हैं ।
केएल -7

2
क्या मैं प्रतिबद्ध आईडी का उपयोग करते हुए, मास्टर के अलावा दो स्थानीय शाखाओं के बीच विलय कर सकता हूं?
SKT

1
@ आप का उपयोग करने से पहले आप जिस स्थानीय शाखा में विलय करना चाहते हैं, आप कर सकते हैं git merge। यानी आप ब्रांच b2 से 18a6fac को ब्रांच b1 में मर्ज करना चाहते हैंgit checkout b1; git merge 18a6fac
XioRcaL

1
इस काम प्रतीत होता है नहीं, अगर मैं एक शाखा मैं में अलग करना चाहते हैं और वहाँ प्रतिबद्ध एबी और सी के साथ कुछ अन्य शाखा है पर हूँ, और मैं सी में विलय यह केवल सी में किए गए परिवर्तनों, नहीं ए और बी हो जाता है
ggb667

12

ब्रंचिंग को साफ रखने के लिए, आप यह कर सकते हैं:

git checkout newbranch
git branch newbranch2
git reset --hard <commit Id> # the commit at which you want to merge
git checkout master
git merge newbranch
git checkout newbranch2

इस तरह, newbranch समाप्त हो जाएगा जहां इसे मास्टर में विलय कर दिया गया था, और आप newbranch2 पर काम करना जारी रखते हैं।


1

वर्तमान शाखा फ़ोल्डर में कमांड से नीचे चलाएं इस <commit-id>से वर्तमान शाखा में विलय करने के लिए, --no-commitस्वचालित रूप से एक नया कमिट न करें

git merge --no-commit <commit-id>

git merge --continue मर्ज के बाद केवल चलाया जा सकता है जिसके परिणामस्वरूप संघर्ष होता है।

git merge --abort वर्तमान संघर्ष रिज़ॉल्यूशन प्रक्रिया को रद्द करें, और पूर्व-मर्ज स्थिति को फिर से संगठित करने का प्रयास करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.