2013-08-19 7 views
11

से रीबिट किए गए काम दिखा रहा है मैं एक टीम के साथ काम कर रहा हूं और हम फीचर शाखाएं कर रहे हैं और अनुरोध खींच रहे हैं।गीथब पर अनुरोध खींचें - मास्टर

मैंने एक शाखा बनाई, मास्टर पर थोड़ा काम करने के दौरान थोड़ा सा काम किया।

फिर, मैंने मास्टर के खिलाफ शाखा को पुनर्जीवित किया। अब मैं पुल अनुरोध करना चाहता हूं।

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

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

एकमात्र सुझाव जो मैं देखता हूं वह नवीनतम अपस्ट्रीम मास्टर के आधार पर एक और शाखा बना रहा है और मेरी शाखा से चेरी पिकिंग करता है।

उत्तर

3

आपने कुछ गलत किया होगा। रिबेस के परिणामस्वरूप, मास्टर में अंतिम प्रतिबद्धता के बाद आपके पास केवल अद्वितीय संशोधन होना चाहिए, और आपकी शाखा को तेजी से आगे के लिए तैयार होना चाहिए।

मैंने अभी एक त्वरित परीक्षण किया है, और निश्चित रूप से, पुल अनुरोध केवल अपेक्षित अद्वितीय संशोधन दिखाता है। कोई शोर अव्यवस्था नहीं होनी चाहिए, और चेरी लेने की कोई ज़रूरत नहीं है। ऐसा लगता है कि आपकी शाखाओं में कुछ गड़बड़ है।

दोबारा पुन: प्रयास करने का प्रयास करें। यदि आपने पहले ठीक से पुन: प्रयास किया है, तो यह अब एनओ-ओपी होना चाहिए। अपनी शाखा पर देखें, और गुरु के ऊपर फिर से rebase करने की कोशिश, इस तरह:

git checkout yourbranch 
git rebase master 

यह Current branch will-have-rebased is up to date. प्रिंट चाहिए, और आप GitHub के लिए शाखा धक्का के बाद, आप एक पुल अनुरोध बनाने के लिए सक्षम होना चाहिए जहां केवल अद्वितीय काम दिखाता है। मैं नहीं देखता क्यों नहीं।

महत्वपूर्ण: ध्यान रखें कि यदि आप रिबेसिंग से पहले अपने शाखा धक्का दे दिया था, तो Git रिबेसिंग के बाद फिर से पुश करने के लिए मना कर देगा। ऐसा इसलिए है क्योंकि आम तौर पर आपको सार्वजनिक शाखाओं के इतिहास को फिर से लिखना नहीं चाहिए, और इस बिंदु को समझाने पर सभी गाइडों को समझना चाहिए। यदि आप वैसे भी शाखा को धक्का देना चाहते हैं, तो गिटूब पर अपना इतिहास दोबारा लिखना, --force ध्वज जोड़ें। , हम foo शाखा है, तो

master, जो पहले से ही origin में धकेल दिया जाता है से branched है, और दोनों शाखाओं पर बदल जाता है, बना रहे थे तो विलय/रिबेसिंग मैं हो रही थी परिवर्तन के बाद:

+1

यह निर्दिष्ट के रूप में काम करता है, लेकिन फिर मैं शाखा को धक्का नहीं दे सकता। जवाब इसलिए है क्योंकि मैं पहले से ही पहले ही धक्का लगा था। –

+0

@HsiuDai आप फिर से धक्का नहीं दे सकते क्योंकि धक्का देने के लिए कुछ भी नहीं है, या क्योंकि गिट शाखा के इतिहास को फिर से लिखने से इंकार कर देता है? क्या आप अपने रेपो का यूआरएल और शाखा का नाम पोस्ट कर सकते हैं? – janos

+0

निजी रेपो मुझे डर है, इसे बाहर नहीं दे सकता। लेकिन ऐसा इसलिए है क्योंकि गिट इतिहास को फिर से लिखने से इंकार कर देता है, क्योंकि रिबेस के बाद एसएचए अब अलग हैं। –

8

मैं एक ही समस्या है के लिए इस्तेमाल किया पुल अनुरोध के diff में master से।

मैं git fetch को क्रियान्वित करने के लिए पहले, अपने स्थानीय master शाखा को अद्यतन करने, foo को स्थानीय शाखा को बदलने और उसके बाद क्रियान्वित आदेशों द्वारा इसे हल:

git rebase master

git push -f origin foo:foo

इस दूरदराज के शाखा मजबूर कर रहा है और उसके बाद पीआर के diff में केवल उचित परिवर्तन होते हैं, ठीक उसी तरह जैसे शाखा हाल ही में master के आधार पर बनाई जाएगी।

+0

मुझे 'सब कुछ अद्यतित' मिलता है कुछ भी नहीं बदलता – feresr

+0

क्या आपने पहले 'मूल/मास्टर' से खींच लिया था? क्या आप दूरस्थ रूप से 'foo' दबाते समय बल का उपयोग करते थे? –

+0

मुझे लगता है कि मैं पुश को मजबूर करना भूल गया था, मैंने इसे अपने पीआर पर 'आधार' शाखा को मास्टर के अलावा किसी अन्य शाखा में बदलकर हल किया और फिर इसे वापस बदल दिया – feresr