2011-08-26 25 views
172

मेरे पास एक प्रोजेक्ट ("configUpdate") की एक स्थानीय शाखा है जिसे मैंने किसी और के प्रोजेक्ट से फोर्क किया है और मैंने इसमें कुछ बदलाव किए हैं और मर्ज करना चाहते हैं वे परिवर्तन जो मैंने अपनी स्थानीय शाखा में किए हैं।रिमोट मास्टर को स्थानीय शाखा में कैसे विलय करें

मैं

git pull --rebase origin configUpdate 

की कोशिश की है, लेकिन यह नवीनतम परिवर्तनों को पकड़ा नहीं गया है - मैं दो कैसे मर्ज कर सकते हैं? (यह भी बोनस अंक के लिए कि मैं क्या pull --rebase कमांड के साथ क्या किया?)

+0

संभावित डुप्लिकेट [Git: स्थानीय स्तर पर एक रिमोट शाखा मर्ज] (https://stackoverflow.com/questions/21651185/git-merge-a-remote-branch-locally) –

उत्तर

61

मुझे पता चला था:

$ git fetch upstream 
$ git merge upstream/master 
+6

तो, अगर आपने इसे पहले से नहीं समझा है, तो आपका 'पुल - रीबेस' काम नहीं करता है क्योंकि 'मूल' आपके कांटा को इंगित कर रहा था। अगर आपने 'गिट पुल - रीबेस अपस्ट्रीम/मास्टर' किया तो यह काम करता। –

+0

आज़माएं: गिट मर्ज मूल/मास्टर – Chris

264

कैसे (यह मानते हुए आप शाखा configUpdate पर वर्तमान में कर रहे हैं) के बारे में:

git fetch 
git rebase origin/master 

संक्षेप में:

  • git merge branchname शाखा branchname से नई प्रतिबद्धता लेता है, और उन्हें वर्तमान शाखा में जोड़ता है। यदि आवश्यक हो, तो यह स्वचालित रूप से शीर्ष पर "मर्ज" प्रतिबद्धता जोड़ता है।

  • git rebase branchname शाखा branchname शाखा से नई प्रतिबद्धता लेता है, और उन्हें आपके परिवर्तनों के तहत "अंतर्निहित" करता है। अधिक सटीक, यह वर्तमान शाखा के इतिहास को संशोधित करता है जैसे कि यह branchname की नोक पर आधारित है, जिसमें आपने इसके शीर्ष पर किए गए किसी भी बदलाव के साथ किया है।

  • git pull मूल रूप से git fetch; git merge origin/master जैसा ही है।

  • git pull --rebase मूल रूप से git fetch; git rebase origin/master जैसा ही है।

तो क्यों आप git pull --rebase बजाय git pull का उपयोग करना चाहते हैं? यहां एक साधारण उदाहरण दिया गया है:

  • आप एक नई सुविधा पर काम करना शुरू करते हैं।

  • जब तक आप अपने परिवर्तनों को धक्का देने के लिए तैयार हों, तब तक कई डेवलपर्स अन्य डेवलपर्स द्वारा धक्का दिए गए हैं।

  • यदि आप git pull (जो विलय का उपयोग करता है), तो आपके परिवर्तन स्वचालित रूप से बनाए गए विलय प्रतिबद्धता के अतिरिक्त, नई प्रतिबद्धताओं द्वारा दफन किए जाएंगे।

  • आप git pull --rebase बजाय, Git आगे अपने मास्टर तेजी से होगा के अपस्ट्रीम, तो शीर्ष पर अपने परिवर्तन लागू करें।

+0

मैं सही शाखा पर ऐसा किया लेकिन मैं अब भी अपनी स्थानीय फाइलों और मूल परियोजना की रिमोट मास्टर शाखा के बीच मतभेद देख सकता हूं (भले ही यह कहता है कि सबकुछ अद्यतित है!) हो सकता है कि मैंने प्रोजेक्ट को गलत तरीके से सेट कर दिया हो? जांच करने का कोई तरीका? – Martyn

+0

@ मार्टिन: अंतर आपके स्थानीय परिवर्तन होना चाहिए। रिमोट शाखा का एक और कांटा बनाएं और जांचें कि क्या उसमें सही फ़ाइल सामग्री है या नहीं। – ZeissS

+1

मुझे पता है कि यह एक पुराना जवाब है, लेकिन ध्यान दें कि आप एक रिबेस के बजाय एक मेरिज करना पसंद कर सकते हैं। यदि आप बाद में रिमोट रेपो में विलय करना चाहते हैं, तो आपके पास कुछ बदलाव नहीं हैं, तो आप रीबेज नहीं करना चाहते हैं। –

27

अपनी स्थानीय शाखा

> Git चेकआउट configUpdate में स्विच करें

अपनी शाखा करने के लिए दूरस्थ मास्टर मर्ज

> Git रिबेस मास्टर configUpdate

मामले में आप कोई विरोध है, उन्हें सही और प्रत्येक विरोध हुआ फ़ाइल के लिए

> Git जोड़ने [path_to_file/conflicted_file] (जैसे आदेश कर Git एप्लिकेशन/आस्तियों/javascripts/test.js जोड़ने)

जारी rebase

> Git rebase --continue

+0

मर्ज करने के बजाय रीबेस का उपयोग करने से डरो मत, अगर आप इस प्रश्न में अंतर महसूस करते हैं तो कुछ समय की जांच करें –

+1

बहुत बहुत धन्यवाद। यह प्रक्रिया मेरे लिए काम करती है। – Fortisimo

9

Git रिबेस मेरे लिए काम करने के लिए नहीं मालूम था। गिट रिबेस के बाद, जब मैं अपनी स्थानीय शाखा में परिवर्तनों को धक्का देने की कोशिश करता हूं, तो मुझे एक त्रुटि मिलती है ("संकेत: अपडेट अस्वीकार कर दिए गए थे क्योंकि आपकी वर्तमान शाखा की नोक इसके रिमोट समकक्ष के पीछे है। दूरस्थ परिवर्तनों को एकीकृत करें (उदाहरण के लिए 'गिट पुल। .. ') फिर से धक्का देने से पहले। ") गिट खींचने के बाद भी। आखिर में मेरे लिए क्या काम किया गया गिट विलय था।

git checkout <local_branch> 
git merge <master> 

तुम मुझे पसंद अभी शुरुआत कर रहे हैं, यहाँ Git पर एक अच्छा लेख बनाम Git रिबेस विलय है। https://www.atlassian.com/git/tutorials/merging-vs-rebasing

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