2013-08-14 4 views
10

एक ही रास्ता:पुश शाखा के बीच क्या अंतर है और मास्टर को मर्ज करें तो पुश करें?

git checkout myBranch 
git push origin myBranch:master 

एक और तरीका है:

git checkout master 
git merge myBranch 
git push 

क्या इन दोनों के बीच का अंतर है?

+1

एक और महत्वपूर्ण सवाल: *** आप क्या करने की कोशिश कर रहे हैं, और क्यों? *** –

+0

मैं बस अपने परिवर्तन दूरस्थ मास्टर में विलय करना चाहता हूं। लेकिन मुझे नहीं पता कि रिमोट मास्टर में कुछ नए काम लिखने पर मुझे कोई जोखिम है या नहीं। – Magicloud

+0

'गिट पुश मूल मायब्रैंच: मास्टर' के मामले में, यह केवल तेज़-आगे है, जब तक आप '+ mybranch: master' जैसे refspec में प्लस '+' नहीं जोड़ते हैं, जो तब मजबूर अपडेट की अनुमति देता है। इसी प्रकार, 'गिट पुश' फास्ट-फॉरवर्ड, केवल गैर-मजबूर अद्यतन है, बस फोर्स फ्लैग '-एफ' पास न करें। –

उत्तर

6

यह:

git checkout myBranch 
git push origin myBranch:master 

बस (जैसे गैर-मजबूर अद्यतन) master को myBranch की धक्का तेजी से आगे करने के लिए प्रयास करता है। यदि mastermyBranch से पहुंच योग्य है, यानी master में कोई भी काम नहीं है जो myBranch भी नहीं है, तो पुश सफल होगा; अन्यथा, धक्का खारिज कर दिया जाएगा।

पिछले git checkout myBranchgit push के लिए अप्रासंगिक है, क्योंकि आप refspec myBranch:master का उपयोग कर रहे हैं। आप Git Internals - The Refspec पर रेफस्पेक्स के बारे में अधिक जान सकते हैं।

यह:

git checkout master 
git merge myBranch 
git push 

वास्तव में master में myBranch विलीन हो जाती है, और फिर एक दूरस्थ करने के लिए यह पुश करने के लिए प्रयास करता है (एक Git रेपो की एक डिफ़ॉल्ट विन्यास के साथ, दूरस्थ मूल हो जाएगा)।

क्योंकि myBranch वास्तव में master में विलय कर दिया है, तो यह सोचते हैं दूरस्थ master, स्थानीय एक के पीछे है यानी यह शामिल नहीं है करता है स्थानीय एक भी नहीं है कि, तो धक्का सफल होगा, अन्यथा यह विफल हो जाएगा ।

+0

लेकिन ध्यान दें कि 'गिट मर्ज' अभी भी एक फास्ट-फॉरवर्ड विलय में हो सकता है। तो मास्टर, मूल/मास्टर और MyBranch – knittl

+0

@knittl के बीच संबंधों के आधार पर अंतिम परिणाम एक जैसा हो सकता है या नहीं भी हो सकता है, मुझे पता है कि 'गिट मर्ज मेरा ब्रंच' तेजी से आगे हो सकता है। हालांकि मैं इसे ऊपर नहीं लाया, क्योंकि (1) कहता है कि यह एक तेज़ आगे है। फिर 'गिट पुश मायब्रैंच: मास्टर' और 'गिट पुश मूल' वही हैं। लेकिन फिर (2), मान लीजिए कि 'गिट मर्ज मेरी ब्रंच' तेजी से आगे नहीं है। इस बिंदु पर, यदि उपयोगकर्ता 'गिट पुश मूल मायब्रैंच: मास्टर' करता है, तो यह वही अपडेट है जो 'गिट पुश मूल' से होगा: रिमोट शाखा दोनों तेजी से आगे। तो यह अभी भी वही है। –

+0

@ कूपकेक तो मूल रूप से, कोई फर्क नहीं पड़ता है या नहीं, मेरे दो तरीकों का परिणाम वही है? – Magicloud

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