2015-09-28 11 views
8

मेरा ठेठ गिट वर्कफ़्लो हमारी मास्टर शाखा से फीचर शाखा बनाना है, छोटे काम करता है, जबकि समय-समय पर मास्टर से विलय करने के रास्ते में विलय होता है।विलय के बाद इंटरैक्टिव रिबेस/अन्य इंटरमीविंग मेरा

मैं फिर जिथब पर एक पुल अनुरोध खोलता हूं और जब यह स्वीकार किया जाता है तो मैं शाखा को हटा दूंगा। मैं अधिक बार बातचीत करना चाहता हूं लेकिन जब मैं करता हूं तो मुझे मर्ज कमेट्स और अन्य लोगों के साथ मिलकर काम करना पड़ता है। मुझे यकीन नहीं है कि कैसे/अगर मैं अकेले उन स्क्वैश या समूह/स्क्वैश खान को स्क्वैश कर सकता हूं?

उदाहरण के लिए, अपनी शाखा के लिए मेरे Git लॉग ऐसा दिखाई दे सकता है जब यह rebase करने के लिए समय आता है:

merge commit 
someone else's commit 
one of my commits 
another one of my commits 
another merge commit 
another person's commit 
one of my commits, the first one after branching 

मैं क्या संभव है और क्या एक इंटरैक्टिव रिबेस नहीं कर रही और कुचलने जब है और समस्या आ रही है पुनर्गठन करता है। उपर्युक्त वर्कफ़्लो को देखते हुए, आप क्या सलाह देंगे?

+1

वहाँ एक कारण है कि आप rebase का उपयोग कर रहे है? – ilj

+0

@ilj अन्य टीम के सदस्य जितना संभव हो सके स्वच्छ इतिहास रखना चाहते हैं, इसलिए प्रतिबद्धता इतिहास को उचित रखना है। मैं अपने अनुभव में व्यक्तिगत रूप से एक उचित चैट इतिहास (पूरी तरह से लाइन से बाहर नहीं) – jkj2000

+0

पर ध्यान नहीं देता यह हलकों की तुलना में अधिक समस्याएं पैदा करता है। – ilj

उत्तर

3

हमारे कार्यालय में उपयोग की जाने वाली प्रक्रिया master शाखा (या जो भी शाखा आप मर्ज करने की उम्मीद कर रही है) को अपने पुल अनुरोध विलय करने से पहले रीबेज करना है। यह सुनिश्चित करता है कि आपके प्रतिबद्ध master है, जो दूसरों के साथ अपने प्रतिबद्ध की इंटरलिविंग समाप्त में वर्तमान में अन्य सभी प्रतिबद्ध के शीर्ष पर क्रमबद्ध होते हैं:

> git fetch upstream master 
> git rebase upstream/master 
+1

मैं देखता हूं, धन्यवाद। इसलिए मैं इसे मर्ज करने के बजाए समय-समय पर मास्टर से छूट देता हूं। – jkj2000

2

मुझे यकीन है कि कैसे/अगर मैं उन प्रतिबद्ध स्क्वैश या कर सकते हैं नहीं कर रहा हूँ समूह/स्क्वैश मेरा अकेला?

स्क्वाश केवल दूसरों को नहीं करता !!

हाल ही में, मुझे एक ही समस्या का सामना करना पड़ा, मेरे पास मेरे पुल अनुरोधों पर 41 काम था, मेरी शाखा में विलय संघर्ष था और मेरा पुल अनुरोध पुराना था। मुझे अब आप जिन समस्याओं का सामना कर रहे हैं, उससे निपटना पड़ा। मैं केवल कुछ जो मैंने लागू किया है उसे छूंगा।

one of my commits 
another one of my commits 
one of my commits, the first one after branching 

मैं स्क्वैश सुझाव है केवल अपने प्रतिबद्ध (उन सभी को आप करना चाहते हैं)।

उदाहरण के लिए, यदि आपके पास 3 काम हैं, तो आप उन्हें स्क्वैश कर सकते हैं और इंटरैक्टिव रीबेस का उपयोग कर एक में बना सकते हैं। आदेश नीचे देखें:

$ git rebase -i HEAD~n 

उदाहरण के लिए, आप 3 प्रतिबद्ध छुटकारा पाने के लिए चाहते हैं: अब

$ git rebase -i HEAD~3 

, आप एक इंटरैक्टिव रिबेस इंटरफेस है, जहां आप reword/पहली पर लेने के लिए प्रतिबद्ध लिख सकते हैं और पर छुटकारा पाने कर सकते हैं बाकी के। बेहतर समझने के लिए कृपया इस वीडियो को देखें।

Squashing commits

merge commit 
someone else's commit 
another merge commit 
another person's commit 

रिबेस अन्य (किसी और) करता है

यह आम समस्या हर किसी का सामना करना पड़ता है जब Git का उपयोग कर सकते हैं। कल्पना कीजिए कि आप अपने स्थानीय रेपो पर काम कर रहे हैं। थोड़ी देर के लिए काम करने के बाद, आपने कुछ काम किया है, अब आप उन्हें मूल रिमोट रिपोजिटरी में धक्का देना चाहते हैं। कूल, आपने यह git push किया जो merge commit समस्या कहता है।

आप जानते हैं कि किसी और ने उसी रिमोट रेपो को भी प्रतिबद्ध किया है जो अब अपडेट किया गया है। चूंकि आपका स्थानीय रेपो दूरस्थ रूप से अपडेट नहीं किया गया है, इसलिए merge commit problem है। अब अगर हम इस समस्या को साफ़ करते हैं तो क्या होगा? क्या हम अपने स्थानीय मशीन के रेपो को अपने मूल रिमोट पर अपडेट कर सकते हैं? क्या यह संभव है?

हां, यह संभव है, आप इसे पुन: प्राप्त करके कर सकते हैं। कैसे?

जब आप ऐसा करेंगे:

git pull --rebase 

यहाँ क्या हो रहा है? गिट आपके सभी स्थानीय कामों को रिवाइंड (पूर्ववत) कर देगा, रिमोट कमेट्स को खींच देगा और फिर नए खींचने वाले रिमोट कमेट्स के शीर्ष पर अपने स्थानीय कामों को फिर से चलाएगा। यदि कोई संघर्ष उत्पन्न होता है कि गिट संभाल नहीं सकता है तो आपको अपने स्थानीय कामों को फिर से चलाने के लिए मैन्युअल रूप से मर्ज करने का मौका दिया जाएगा, फिर बस git rebase --continue चलाएं।

अधिक जानकारी के

आप अपनी शाखा विलय करने में महारत हासिल करने के लिए चाहते हैं, तो इस blog post देखते हैं?

Best (and safest) way to merge a git branch into master

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