दिलचस्प पोस्ट
पुनरावर्ती या परिवर्तन? फ़ायरफ़ॉक्स में अतिरिक्त बटन रिक्ति / पैडिंग निकालें मैं स्वयं को हस्ताक्षर किए प्रमाण पत्र कैसे स्वीकार कर सकता हूं? रिवर्स इंजीनियरिंग को एक डेटाबेस में नेविगेशन प्रॉपर्टी नामों में सुधार करें MySQL ट्रिगर अद्यतन के बाद ही अगर पंक्ति बदल गई है विज़ुअल स्टूडियो में असेंबली संदर्भ कार्य की "विशिष्ट संस्करण" की संपत्ति कैसे ठीक है? Django यूआरएल त्रुटि: देखने के मामले में एक कॉल करने योग्य या एक सूची / ट्यूपल होना चाहिए () PHP में पाठ से यूआरएल निकालें डॉक्यूमेंटबिल्ल्डर बनाओ। डीडीटी संदर्भों को अनदेखा करें PHP एक दिए गए निर्देशिका के सभी उप-निर्देशिकाएं प्राप्त करें एसक्यूएल में, गिनती (स्तंभ) और गिनती (*) के बीच अंतर क्या है? एसोसिएशन टेबल में अतिरिक्त फ़ील्ड के साथ पहले, बहुत से कई कोड बनाएं HTML से चयन विकल्प मान प्राप्त करने के लिए $ _POST का उपयोग करना जावा में सॉफ्टरेफरेंस और वीक रेफरेंस के बीच क्या अंतर है? स्टार्टअप पर लॉन्च करने के लिए मैं एक प्रोग्राम कैसे सेट करूं?

मुझे एक नई शाखा को स्पष्ट रूप से पुश करने की आवश्यकता क्यों है?

मैं git में नया हूँ और मैं अभ्यास कर रहा हूं। मैंने एक स्थानीय शाखा बनाई, लेकिन मैंने देखा कि जब मैंने git push मेरी शाखा को रिपॉजिटरी में अपलोड नहीं किया गया था। मुझे वास्तव में करना था: git push -u origin --all
ऐसा क्यों है? क्या एक शाखा एक नया परिवर्तन नहीं है जिसे डिफ़ॉल्ट रूप से धक्का दिया जाए? मुझे दूसरे आदेश को चलाने की आवश्यकता क्यों है?

वेब के समाधान से एकत्रित समाधान "मुझे एक नई शाखा को स्पष्ट रूप से पुश करने की आवश्यकता क्यों है?"

वास्तविक कारण यह है कि, एक नया रेपो (जीआईटी इनट) में, कोई शाखा नहीं है (कोई master नहीं, बिल्कुल शाखा नहीं, शून्य शाखाएं)

इसलिए जब आप पहली बार रिक्त अपस्ट्रीम रेपो (आम तौर पर एक नंगे ) के लिए पहली बार जोर दे रहे हैं, तो अपस्ट्रीम रेपो में एक ही नाम की कोई शाखा नहीं है।

तथा:

  • डिफ़ॉल्ट पुश पॉलिसी ' matching ' थी (एक ही नाम की सभी शाखाओं को धक्का देकर, अगर वे मौजूद नहीं हैं तो उन्हें बनाते हैं),
  • डिफ़ॉल्ट पुश पॉलिसी अब ' simple ' है (केवल वर्तमान शाखा को दबाएं, और केवल तभी जब इसकी अपस्ट्रीम पर समान नामांकित रिमोट ट्रैकिंग शाखा है, क्योंकि git 1.7.11 )

दोनों मामलों में, अपस्ट्रीम रिक्त रेपो में कोई शाखा नहीं है:

  • अभी तक कोई मिलान शाखा नहीं है
  • कोई भी उपस्ट्रीम शाखा नहीं है (या इसके बिना नाम के बिना या ट्रैकिंग नहीं)

इसका मतलब है कि आपके स्थानीय पहले धक्का का पता नहीं है:

  • जहां को पुश करने के लिए
  • क्या करने के लिए धक्का (चूंकि यह किसी भी अपस्ट्रीम शाखा को एक दूरदराज के ट्रैकिंग शाखा के रूप में दर्ज नहीं किया गया है, और / या उसका नाम होने पर)

तो आपको कम से कम एक करने की आवश्यकता है:

 git push origin master 

लेकिन अगर आप केवल यही करते हैं, तो आप:

  • अपस्ट्रीम पर एक अपस्ट्रीम master शाखा बना देगा (अब रिक्त नहीं रिक्त): अच्छा।
  • यह रिकॉर्ड नहीं करेगा कि स्थानीय शाखा ' master ' को अपस्ट्रीम ( origin ) ' master ' (अपस्ट्रीम शाखा) में धकेल दिया जाना चाहिए: खराब।

यही कारण है कि इसे करने के लिए पहले धक्का के लिए सिफारिश की गई है:

 git push -u origin master 

यह origin/master को दूरस्थ ट्रैकिंग शाखा के रूप में रिकॉर्ड करेगा, और master को origin/master लिए स्वचालित रूप से पुश करने के लिए अगले पुश सक्षम करेगा।

 git checkout master git push 

और यह पुश नीतियों ' current ' या ' upstream ' के साथ भी काम करेगा
प्रत्येक मामले में, शुरुआती git push -u origin master , एक सरल git धक्का मास्टर को सही अपस्ट्रीम शाखा को जारी रखने के लिए पर्याप्त होगा।

तुम नहीं, नीचे देखें

मुझे यह 'सुविधा' बल्कि कष्टप्रद लगता है क्योंकि मैं चाँद को रॉकेट लॉन्च करने की कोशिश नहीं कर रहा हूं, बस अपनी शाखा को धक्का दे रहा हूं आप शायद ऐसा करते हैं या नहीं आप यहाँ नहीं होंगे!

यहां तय है: यदि आप चाहते हैं कि यह वर्तमान शाखा के लिए निहित हो तो चाहे वह शाखा मौजूद हो, तो यह आदेश एक बार जारी करें और आपको कभी भी फिर कभी नहीं होगा:

 git config --global push.default current 

इसलिए यदि आप इस तरह शाखाएं बनाते हैं:

 git checkout -b my-new-branch 

और फिर कुछ कमाने और फिर एक करते हैं

 git push 

उन्हें मूल रूप से प्राप्त करने के लिए (उस शाखा पर होना) और यदि यह अस्तित्व में नहीं है, तो आपके लिए यह शाखा कहा जाएगा

git push उत्पादन जब एक नई शाखा को धकेलता है

 > git checkout -b new_branch Switched to a new branch 'new_branch' > git push fatal: The current branch new_branch has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin new_branch 

एक सरल git push यह मानता है कि वहां एक दूरस्थ शाखा मौजूद है जो वर्तमान स्थानीय शाखा पर नज़र रख रही है यदि ऐसी कोई दूरस्थ शाखा मौजूद नहीं है, और आप इसे बनाना चाहते हैं, तो आपको यह निर्दिष्ट करना होगा कि -u ( --set-upstream लघु रूप) का उपयोग करके ध्वज

ऐसा क्यों है? मुझे लगता है कि कार्यान्वयनकर्ताओं ने महसूस किया कि रिमोट पर एक शाखा बनाने की ऐसी बड़ी कार्रवाई है कि इसे गलती से करना कठिन होगा। git push कुछ है जो आप हर समय करते हैं

"क्या कोई शाखा एक नया परिवर्तन नहीं है जिसे डिफ़ॉल्ट रूप से धक्का दिया जाए?" मैं कहूंगा कि गिट में "एक बदलाव" एक प्रतिबद्ध है। एक शाखा एक प्रतिबद्ध के लिए एक सूचक है। मेरे लिए यह एक धक्का के बारे में सोचने के लिए और अधिक समझ में आता है जो अन्य रिपॉजिटरी के लिए दबाव डालता है। कौन सी प्रतिबद्धता को धक्का दिया जाता है, यह निर्धारित किया जाता है कि आप किस शाखा पर हैं और रिमोट पर शाखाओं में उस शाखा का ट्रैकिंग संबंध है।

आप प्रो गिट बुक के रिमोट ब्रांच्स अध्याय में ट्रैकिंग शाखाओं के बारे में अधिक पढ़ सकते हैं।

मुझे मूल डेवलपर्स द्वारा यह जल्दी से कोई तर्क नहीं मिल सका, लेकिन मैं आपको गिट अनुभव के कुछ वर्षों के आधार पर एक शिक्षित अनुमान दे सकता हूं।

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

इसके अलावा, सभी शाखाओं को कहाँ भेजना चाहिए? गिट कई रिमोट्स के साथ काम कर सकता है और आपको प्रत्येक पर शाखाओं के विभिन्न सेटों को करना है। उदाहरण के लिए एक केंद्रीय परियोजना गीथहब रेपो में रिलीज की शाखाएं हो सकती हैं; एक गीथहूब कांका समीक्षा के लिए विषय शाखाएं हो सकता है; और एक स्थानीय जीआईटी सर्वर में स्थानीय विन्यास वाले शाखाएं हो सकती हैं। अगर git push सभी शाखाओं को रिमोट तक धकेलता है जो वर्तमान शाखा को ट्रैक करता है, तो इस तरह की योजना को पेंच करना आसान होगा।

सिर वर्तमान शाखा के लिए कम है इसलिए git push -u मूल HEAD कार्य करता है। अब इस टाइपिंग से बचने के लिए मैं उपनाम का उपयोग करता हूं:

git config –global alias.pp 'पुश -यू मूल हेड'

इसके बाद, हर बार मैं जीआईटी-बी शाखा के माध्यम से बनाई गई शाखा धक्का करना चाहता हूं:

जीआईटी पीपी

उम्मीद है कि यह किसी के लिए समय बचाता है!