यदि आपके पास एक समर्थन शाखा है जहां आप बग ठीक करते हैं और नए संस्करण बनाते हैं। मास्टर पर आपके पास अगला संस्करण है जहां आप अक्सर नए संस्करण भी बनाते हैं।
हर बार जब आप एक नया संस्करण बनाते हैं तो आप कुछ फ़ाइल में संस्करण बदलते हैं, उस नई फ़ाइल को प्रतिबद्ध करते हैं, एक टैग बनाते हैं और पुश करते हैं। अब समर्थन से मास्टर से विलय हो जाता है जिसमें हमेशा संस्करण जानकारी वाली फ़ाइल में विवाद होंगे।
यदि फ़ाइल जानकारी वाली फ़ाइल में केवल में संस्करण जानकारी है, तो आप fcurella के उत्तर के साथ जा सकते हैं। लेकिन अगर यह वास्तव में विलय योग्य जानकारी (pom.xml, gradle.properties, MANIFEST.MF, ...) भी हो सकता है, तो आपको कुछ अतिरिक्त कार्रवाई करनी होगी।
निम्न उदाहरण
C---D*---E---F* support
/
A---B---G---H*---I master
जहां के साथ सितारों केवल संस्करण परिवर्तन है कि मर्ज के दौरान अनदेखा किया जाना चाहिए की वजह से परिवर्तन शामिल करता है का उपयोग करने देता है।
बिना संस्करण बनाता है की वजह से मर्ज-संघर्ष मास्टर में समर्थन मर्ज करने के लिए, आप निम्न में से किसी कर सकते हैं:
एकाधिक मर्ज करता
git checkout master
git merge C
git merge D -s ours
git merge E
git merge F -s ours
-s ours
तर्क के साथ हम कार्यक्षेत्र को बदलने के बिना केवल मर्ज रिकॉर्ड करने के लिए गिट को बता रहे हैं। यह तुलनीय to the --record-only
option of svn है।
ऊपर निम्नलिखित लेआउट
-------------C---D*---E---F* support
/ \ \ \ \
A---B---G---H*---I---J---K----L---M master
एक मर्ज का उपयोग कर के लिए प्रतिबद्ध में परिणाम होगा चेरी लेने
git checkout master
git merge support -s ours --no-commit
git cherry-pick C E --no-commit
git commit -m 'merged support into master'
पहले हम, किसी मर्ज लेकिन केवल रिकॉर्ड है कि हम विलय कर रहे हैं शुरू कर रहे हैं को बदले बिना कार्यक्षेत्र और विलय प्रतिबद्ध किए बिना। फिर हम बिना किसी प्रतिबद्धता के फिर से विलय करने के लिए काम करते हैं। अंत में हम विलय कर रहे हैं।
ऊपर निम्नलिखित लेआउट
C---D*---E---F* support
/ \
A---B---G---H*---I---J master
एक भी चेरी पिकिंग को स्वचालित कर सकता का परिणाम देगा।
git checkout master
git merge support -s ours --no-commit
for id in `git log support --reverse --not HEAD --format="%H [%an] %s" |
grep -v "bump version" |
sed "s/\(\w*\)\s.*/\1/g"`
do
git cherry-pick --no-commit $id
done
git commit -m 'merged support into master'
[गिट-स्किपिंग विशिष्ट विलय के दौरान विशिष्ट काम करता है] का संभावित डुप्लिकेट (https://stackoverflow.com/questions/727994/git-skipping- विशिष्ट-commits-when-merging) - मुझे पता है कि यह छोटा है, लेकिन इसकी [ स्वीकार्य उत्तर] (https://stackoverflow.com/a/729723/321973) IMHO बेहतर –