एक ही समय में धक्का देने या धक्का दिए बिना, अपस्ट्रीम को सेट करने के कई तरीके हैं।
यदि magit-push-current-set-remote-if-missingगैर- nil(डिफ़ॉल्ट) है, तो आप कुछ इस तरह देखेंगे:
Push feature to
p pushRemote, after setting that
u @{upstream}, after setting that
e elsewhere
पुश अप करने के लिए origin/featureऔर अपस्ट्रीम प्रेस के रूप में सेट करने के लिए uऔर फिर RETडिफ़ॉल्ट पूरा होने वाले उम्मीदवार को स्वीकार करने के लिए।
यदि magit-push-current-set-remote-if-missingहै nil, तो आप इसके बजाय यह देखेंगे:
Push feature to
e elsewhere
यदि आपने pअभी प्रेस किया है , तो आपको बताया जाएगा कि अपस्ट्रीम कॉन्फ़िगर नहीं किया गया है (इसका मतलब है कि आप अपस्ट्रीम को धक्का नहीं दे सकते अगर कोई अपस्ट्रीम नहीं है)।
लेकिन अगर magit-push-current-set-remote-if-missingहै nil, तो स्विच की सूची की सुविधा होगी --set-upstream, इसलिए आप इसका उपयोग कर सकते हैं P - u pजैसा कि आप उपयोग कर रहे हैं (सिवाय इसके कि दूसरा पी कम है)। हालांकि एक जटिलता है: magit-push-current-set-remote-if-missingआप के मूल्य को बदलने के लिए Emacs को फिर --set-upstreamसे दिखाना या गायब होना है।
अंत में आप "सेट अपस्ट्रीम (और कुछ नहीं करना)" कमांड का उपयोग करके अपस्ट्रीम सेट कर सकते हैं b uorigin/masterRET:। ध्यान दें कि जब आप इस दृष्टिकोण का उपयोग करते हैं, तो आप केवल एक शाखा का चयन कर सकते हैं जो पहले से मौजूद है।
लेकिन पुश-रिमोट को कॉन्फ़िगर करना और उस पर पुश करना बेहतर होगा। पुश-रिमोट के बारे में अधिक जानने के लिए और यह अपस्ट्रीम से कैसे भिन्न होता है, जानकारी पुस्तिका में ब्रांचिंग नोड देखें (वेब संस्करण अभी तक अपडेट नहीं किया गया है)।
मूल रूप से अपस्ट्रीम शाखा वह शाखा है जिसमें आपकी सुविधा शाखा को अंत में विलय कर दिया जाएगा (विलय या पुनरावृत्ति करके, धक्का देकर नहीं), सबसे अधिक संभावना है origin/master। और पुश-रिमोट वह होता है जहां आप अपनी फीचर शाखाओं को पुश करते हुए उन पर काम कर रहे होते हैं, ताकि कोई और उन्हें मर्ज कर सके। यदि स्थानीय शाखा का नाम दिया गया है featureऔर पुश-रिमोट है my-fork, तो उस शाखा का उपयोग करके P pधक्का देना होगा my-fork/feature। ("पुश-टू-ब्रांच" को कॉन्फ़िगर नहीं किया जा सकता, पुश-रिमोट पर शाखा का नाम हमेशा स्थानीय नाम के समान होता है।)
इसलिए जब आपका प्रश्न कुछ ऐसा था "मैं एक ही समय में अपस्ट्रीम को कॉन्फ़िगर करते समय" अपस्ट्रीम को कैसे पुश करता हूं ", मेरी सिफारिश है कि अपस्ट्रीम को बिल्कुल भी पुश न करें, बल्कि पुश-रिमोट से धक्का दें।
बशर्ते आपने मूल्य को नहीं बदला है magit-push-current-set-remote-if-missingआप पुश-रिमोट का उपयोग करके कॉन्फ़िगर कर सकते हैं P psome-remoteRET। लेकिन, जब से आप सभी सुविधा शाखाओं को एक ही रिमोट से पुश करने की संभावना रखते हैं, सभी शाखाओं के लिए एक बार पुश-रिमोट सेट करना बेहतर होता है और इसके साथ किया जाना चाहिए: bऔर तब M-pतक जब तक कि सही रिमोट का चयन न हो जाए।
यह भी ध्यान दें कि आमतौर पर अपस्ट्रीम शाखा को स्पष्ट रूप से सेट करने के लिए आवश्यक नहीं होना चाहिए। जब आप एक नई शाखा बनाते हैं और स्टार्ट-पॉइंट के रूप में एक दूरस्थ शाखा का चयन करते हैं, तो इसका उपयोग अपस्ट्रीम के रूप में किया जाता है।
दुर्भाग्य से प्रारंभिक बिंदु आमतौर पर एक स्थानीय शाखा है और उस स्थिति में डिफ़ॉल्ट रूप से गिट इसे अपस्ट्रीम के रूप में उपयोग नहीं करता है। लेकिन इसे एक बार चलाकर आसानी से तय किया जा सकता है:
git config --global branch.autoSetupMerge always
डिफ़ॉल्ट मान है true, जिसका अर्थ है "शुरू-बिंदु को अपस्ट्रीम के रूप में सेट करें, बशर्ते यह एक दूरस्थ शाखा है"।
वैसे, पुश-रिमोट पर भी यही लागू होता है। वह भी आमतौर पर "नए" रिपॉजिटरी में अर्ध-स्वचालित रूप से सेट किया जाना चाहिए। यदि आप एक भंडार का क्लोन बनाते हैं, तो आपसे पूछा जाएगा कि क्या आप originपुश-रिमोट के रूप में उपयोग करना चाहते हैं । आपको "हां" का जवाब देना चाहिए, जब तक कि आप एक और रिमोट नहीं जोड़ने जा रहे हों, कहते हैं my-fork, जिसे पुश-रिमोट के रूप में इस्तेमाल किया जाना चाहिए। जब आप एक नया रिमोट का उपयोग करते हैं M aऔर remote.pushDefaultअभी तक सेट नहीं किया जाता है, तो आपसे पूछा जाएगा कि क्या आप पुश-रिमोट के रूप में नए जोड़े गए रिमोट का उपयोग करना चाहते हैं।
यह magit-clone-set-remote.pushDefaultऔर का उपयोग करके कॉन्फ़िगर किया जा सकता है magit-remote-add-set-remote.pushDefault।
एक और उन्नत विकल्प है magit-branch-prefer-remote-upstream, जो चूक करता है nil। आप इसे सेट करते हैं करने के लिए t, और फिर एक नई शाखा के लिए शुरू करने बिंदु के रूप में एक स्थानीय शाखा चयन करें, फिर शुरू करने सूत्री की नदी के ऊपर हो सकता है (कुछ नियमों के अनुसार, डॉक-स्ट्रिंग देखें) नदी के ऊपर के रूप में इस्तेमाल किया जा, बजाय शुरुआती बिंदु।
<remote>/<branch>गलती से हिस्सा तुरंत छोड़ दिया गया था ( यह टिप्पणी देखें )। इस बीच, आपmagit-push-current-set-remote-if-missingशून्य पर सेट कर सकते हैं ।