2011-05-31 8 views
5

मेरे पास एक शाखा में कई कार्य हैं। जब मैं इन समीक्षाओं को कोड समीक्षा के लिए धक्का देता हूं, तो हमारे कोड समीक्षा टूल प्रत्येक प्रतिबद्धता के लिए एक समीक्षा बनाता है।इतिहास खोने के बिना एक से अधिक में कई प्रतिबद्धताओं को कैसे गठबंधन करें

इससे बचने के लिए मैं एकाधिक प्रतिबद्धताओं को एक ही प्रतिबद्धता में विलय करना चाहता हूं। साथ ही मैं कामों का इतिहास खोना नहीं चाहता हूं। क्या समीक्षा के लिए केवल एक नई शाखा बनाना संभव है और मेरी मास्टर शाखा में सभी कामों को मेरी समीक्षा शाखा में एक ही प्रतिबद्धता में जोड़ना संभव है? मैं यह कैसे करु?

उत्तर

5

आप यह करने के लिए नहीं करना चाहती । इस बात के अर्थ में वास्तविक इतिहास कि आपने प्रतिबद्धता कैसे की है वह बेकार है। उपयुक्त आकार के लिए समीक्षा के भाग दिलचस्प हैं, इसलिए rebase -i आपकी कार्यशील शाखा को प्रबंधन के आकार और सबसे महत्वपूर्ण तार्किक हिस्सों में जोड़कर गठबंधन करने के लिए, उन्हें मूल इतिहास के बारे में समीक्षा करने और भूलने के लिए पोस्ट करें।

जिसके अनुसार, प्रतिबद्ध गठबंधन करने के लिए, आप का उपयोग कर सकते हैं:

git merge --squash 

Git दूर इतिहास फेंक नहीं होंगे। यह वास्तव में rebase में ऐसा नहीं करता है, लेकिन उस स्थिति में इतिहास का पिछला संस्करण केवल "रीफ्लॉग" के माध्यम से सुलभ रहता है और केवल तभी यदि आपके पास रीफ्लॉग (आईआईआरसी डिफ़ॉल्ट रूप से 9 0 दिन) के लिए समाप्ति हो, तो अंत में यह पहुंच योग्य नहीं होगा और git gc इसे फेंक देगा। लेकिन स्क्वैश के साथ, मूल शाखा बस वहां बनी हुई है और आप अभी भी रिफ्लॉग से संशोधन का नाम दे सकते हैं।

हालांकि समीक्षा किए गए इतिहास को समीक्षा उपकरण द्वारा केंद्रीय मास्टर में विलय कर दिया जाएगा और कोई भी आपका मूल इतिहास कभी नहीं देख पाएगा। आप इसे चारों ओर रख सकते हैं, लेकिन यह आधिकारिक से संबंधित नहीं होगा और कोई भी इसे कभी भी देखेगा।

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