2012-04-05 14 views
6

यहां परिदृश्य है। मैंने "मास्टर" शाखा से "देव" शाखा बनाई और कुछ नए काम किए। उनमें से कुछ परिवर्तन केवल मेरी स्थानीय विकास मशीन के लिए प्रासंगिक होंगे। उदाहरण के लिए मैंने ऑनलाइन यूआरएल के वास्तविक यूआरएल के बजाय एक स्थानीय अपाचे सर्वर पर इंगित करने के लिए एक यूआरएल वैरिएबल बदल दिया (मैंने परीक्षण चरण के दौरान गति के लिए यह किया)। अब मैं देव शाखा से अपने परिवर्तन को मास्टर शाखा में शामिल करना चाहता हूं लेकिन उन परिवर्तनों को नहीं जो केवल मेरे स्थानीय पर्यावरण में ही समझ में आते हैं।गिट में शाखाओं को "हंक" द्वारा कैसे मर्ज करें

मैं एक विलय - पैच की तरह कुछ कल्पना करता था जो मुझे उन परिवर्तनों को चुनने की अनुमति देता है जिन्हें मैं लाइन से लाइन में विलय करना चाहता हूं।

वैकल्पिक रूप से शायद मैं "मास्टर" शाखा को चेकआउट कर सकता हूं, लेकिन फ़ाइलों को मेरी कार्य निर्देशिका में रखता हूं क्योंकि वे "dev" शाखा में थे, फिर एक गिट ऐड-पैच करें। क्या इससे काम हो जायेगा?

उत्तर

2

शायद आप इस तरह कुछ कोशिश कर सकते हैं?

git merge --squash --no-commit $YOUR_OTHER_BRANCH 
git reset HEAD 
git add -p 
git commit 
+0

ध्यान दें कि - स्क्वैश का तात्पर्य है - नवीनतम गिट के रूप में कोई भी प्रतिबद्धता – CharlesB

6

एक दृष्टिकोण अन्य शाखा से परिवर्तनों को मर्ज करना होगा, लेकिन मर्ज करने से पहले विकास-विशिष्ट सामग्री को हटा देना होगा।

सबसे पहले, उन्हें git merge --no-ff --no-commit dev के साथ किए बिना परिवर्तन प्राप्त करें।

प्रभावित फ़ाइलों को संपादित करके और प्रभावित फ़ाइलों को संपादित करके या git reset HEAD प्रभावित फ़ाइलों और फिर git add --patch इच्छित भागों को संपादित करके विकास-विशिष्ट परिवर्तनों को हटाएं।

फिर विलय करें। मर्ज प्रतिबद्ध करने का एक फायदा यह है कि भविष्य में विलय दर्द रहित होगा। चूंकि विकास-विशिष्ट प्रतिबद्धताओं को विलय माना जाता है, इसलिए विकास विलय शामिल नहीं होने वाले भावी विलयों को सरल git merge dev के साथ किया जा सकता है। इस तरह आप अनिश्चित काल तक अपनी खुद की विन्यास के साथ एक अलग शाखा बनाए रख सकते हैं जबकि अभी भी मास्टर शाखा में परिवर्तनों को विलय कर रहे हैं।

+0

ऐसा प्रतीत नहीं होता है। मैंने गिट मर्ज करने की कोशिश की - नो-प्रतिबद्ध देव और वापस आ गया: "91a6696..056b567 फास्ट-फॉरवर्ड अपडेट कर रहा है"। तो फिर मैंने गीट रीसेट हेड और गिट ऐड-पैच टाइप किया और कहा "कोई बदलाव नहीं।" – asolberg

+0

आह, इसके बारे में खेद है, मुझे एक फास्ट फॉरवर्ड विलय की उम्मीद नहीं थी। अद्यतन कमांड के साथ प्रयास करें जिसमें '--no-ff' शामिल है। इससे विलय प्रतिबद्धता को मजबूर होना चाहिए, हालांकि वास्तव में प्रतिबद्ध नहीं है। – blahdiblah

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