क्या git mergeदो शाखाओं, वर्तमान कार्यशील शाखा और मास्टर के बीच अनुकरण करने का कोई तरीका है , लेकिन कोई बदलाव किए बिना?
मुझे अक्सर संघर्ष करना पड़ता है जब मुझे ए git merge। क्या पहले मर्ज का अनुकरण करने का कोई तरीका है?
क्या git mergeदो शाखाओं, वर्तमान कार्यशील शाखा और मास्टर के बीच अनुकरण करने का कोई तरीका है , लेकिन कोई बदलाव किए बिना?
मुझे अक्सर संघर्ष करना पड़ता है जब मुझे ए git merge। क्या पहले मर्ज का अनुकरण करने का कोई तरीका है?
जवाबों:
मुझे नहीं लगता कि जब तक आप मर्ज करने की कोशिश नहीं करेंगे तब तक अनुकरण करने का एक तरीका क्या है। हालाँकि, यदि आप यह सुनिश्चित git statusकरते हैं कि मर्ज करने से पहले , का आउटपुट खाली है, तो आगे बढ़ना और इसे आज़माना काफी सुरक्षित है। यदि आप संघर्ष करते हैं, तो आप तुरंत उस स्थिति में वापस आ सकते हैं जिस पर आप पहले थे:
git reset --merge
1.7.4 git के बाद से, आप ऐसा करके मर्ज को समाप्त कर सकते हैं:
git merge --abort
(जैसा कि उस विकल्प को जोड़ने वाले प्रतिबद्ध संदेश बताते हैं , यह संगति के लिए जोड़ा गया था git rebase --abortऔर इसी तरह।)
--no-commitमेरी राय में प्रयोग करना बहुत आसान है
--no-commitआप अभी भी सूचकांक और वर्किंग ट्री को बदल रहे हैं, जो "बिना कोई बदलाव किए" बिल्कुल नहीं है :) मेरी बात यह है कि जब लोग इस तरह का सवाल करते हैं सवाल, यह आम तौर पर है क्योंकि वे नहीं जानते हैं कि मर्ज कैसे चलेगा यह देखने का सबसे अच्छा तरीका सिर्फ मर्ज की कोशिश करना है , अक्सर क्योंकि वे जानते नहीं हैं कि वे जिस राज्य में पहले थे, वहां वापस जाना कितना आसान है अगर वहाँ समस्याओं का पता चला।
git merge --abortके बराबर है git reset --mergeजब MERGE_HEADइतना जो कुछ भी याद करने के लिए आसान है मौजूद है", :)
आप git merge --no-commitवास्तव में प्रतिबद्ध होने से मर्ज को रोकने के लिए उपयोग कर सकते हैं , और यदि आपको पसंद नहीं है कि मर्ज कैसे काम करता है, तो बस मूल सिर पर रीसेट करें।
यदि आप निश्चित रूप से मर्ज को अंतिम रूप नहीं देना चाहते हैं, भले ही यह तेजी से अग्रेषित हो (और इस प्रकार कोई संघर्ष नहीं है, परिभाषा के अनुसार), आप भी जोड़ सकते हैं --no-ff।
git merge --abortमौजूद है - शायद आपका मतलब है git reset --merge?
rebaseएक के --abortलिए नहीं है git merge।
--no-ffभी फेंक दूंगा। एक एफएफ विलय होने से रखने के लिए।
--no-ffयहां बहुत अनिवार्य है, क्योंकि --no-commitयह तेजी से आगे होने वाले परिवर्तनों को रोक नहीं पाता है।
अगर मैं किसी विषय शाखा में परिवर्तन की तुलना मास्टर से करना चाहता हूं, तो मुझे निम्न कार्य करना सबसे आसान और सुरक्षित लगता है:
git checkout master
git checkout -b trial_merge
git merge topic_branch
मर्ज पूरा करने के बाद, मास्टर से समेकित परिवर्तन देखना आसान है
git diff master
जब किया जाता है, तो केवल परीक्षण_मर्ज शाखा हटाएं
git checkout master
git branch -D trial_merge
इस तरह, मास्टर शाखा कभी नहीं बदलती है।
git checkout --detachइच्छानुसार कुछ भी कर सकते हैं और उसका परीक्षण भी कर सकते हैं। बाद में, यदि आप अपने परिवर्तन रखना चाहते हैं, तो करें git checkout -b new_branch। और यदि आप अपने परिवर्तनों को दूर फेंकना चाहते हैं, तो किसी भी शाखा को चेक करें जिसे आप चाहते हैं ( git checkout master)।
topic_branchबहुत बड़ा है (जैसा कि संभवतः यदि आप इस सवाल पर हैं कि पहली जगह में है) तो diff masterआउटपुट शायद आपके लिए बहुत बड़ा है अगर आप मर्ज करने जा रहे हैं तो संघर्ष हो सकता है।
मैं उपयोग करता हूं :
git merge --ff-only
प्रलेखन के अनुसार :
एक गैर-शून्य स्थिति के साथ विलय करने और बाहर निकलने से इनकार करें जब तक कि वर्तमान एचएएडी पहले से ही अद्यतित न हो या मर्ज को तेजी से आगे के रूप में हल किया जा सके।
यह वास्तव में अनुकरण नहीं है क्योंकि दोनों शाखाओं के बीच कोई संघर्ष नहीं होने की स्थिति में तेजी से आगे बढ़ने वाला मर्ज होगा। लेकिन संघर्ष के मामले में, आपको सूचित किया जाएगा और कुछ भी नहीं होगा।
मैं git merge --abortहाल ही में उपयोग करने में सक्षम हूं । हालांकि, इसका उपयोग केवल तभी किया जा सकता है जब कोई मर्ज संघर्ष हो। यदि आप सुनिश्चित हैं कि आप प्रतिबद्ध नहीं होना चाहते हैं, तो ऊपर वर्णित अन्य विधियों का उपयोग करें।
git merge --abort। आपको भविष्य में अपने उत्तर को यह निर्दिष्ट करके बताना चाहिए कि आप किस उत्तर का उल्लेख कर रहे हैं।
क्यों न केवल एक भगोड़ा शाखा (git चेकआउट-बी) बनाएं, और वहां एक परीक्षण मर्ज करें?
मुझे नहीं पता कि क्या यह आपका मामला है , लेकिन आपका सवाल मुझे याद है कि कभी-कभी मैं एक सुविधा शुरू करता हूं, मैं दिनों के लिए प्रतिबद्ध हूं और मैं इसे कई बार विकसित करता हूं।
इस बिंदु पर मैंने अपने द्वारा परिवर्तित की गई सटीक फ़ाइलों पर नियंत्रण खो दिया है और मुझे यह तभी पता चलेगा जब मेरी सुविधा बंद हो गई थी और मेरा कोड विकसित हो गया।
इस मामले में, यह जानने का एक अच्छा तरीका है कि आपने क्या संशोधन किए (मर्जों के अलावा नहीं) सॉरसेट्री का उपयोग कर रहा है।
आपको आधार शाखा पर दाहिने बटन पर क्लिक करना होगा और चुनें Diff Against Current:
फिर सॉकरट्री आपको उन सभी संशोधनों को दिखाएगा जो विलय हो जाएंगे यदि आप अपनी शाखा को आधार शाखा में विलय कर देते हैं।
बेशक, यह आपको संघर्ष नहीं दिखाएगा, लेकिन यह मर्ज में एक उपयोगी उपकरण है।