स्टेटस बफर से कॉल magit-push-current
करने P P
पर, Magit 2.1.0
मुझसे पूछता है कि पहली बार ब्रांच को कहां पुश करना है, जब अपस्ट्रीम सेट नहीं है।
यह अपने आप ही नाम कैसे उत्पन्न कर सकता है जैसा कि पहले हुआ करता था?
स्टेटस बफर से कॉल magit-push-current
करने P P
पर, Magit 2.1.0
मुझसे पूछता है कि पहली बार ब्रांच को कहां पुश करना है, जब अपस्ट्रीम सेट नहीं है।
यह अपने आप ही नाम कैसे उत्पन्न कर सकता है जैसा कि पहले हुआ करता था?
जवाबों:
अद्यतन: नीचे दी गई "पुश शाखा" को अब तक लागू कर दिया गया है । अधिक जानकारी के लिए शाखाओं के बारे में दस्तावेज देखें।
आपको एक बार अपस्ट्रीम ब्रांच को सेट करना होगा। एक बार जब आप यह है कि किया है P Pकि करने के लिए धक्का और आप स्थिति बफर में unpulled और unpushed परिवर्तन की सूची मिल जाएगा (बशर्ते कोई हो)।
अपस्ट्रीम शाखा को स्थापित करने के विभिन्न तरीके हैं। आप --set-upstream
पुश पॉपअप से स्विच का उपयोग कर सकते हैं P -u P:। या कमांड का उपयोग करें जो अपस्ट्रीम सेट करता है और कुछ और नहीं करता है b u:।
मैगिट अब स्वचालित रूप से एक नई शाखा बनाते समय अपस्ट्रीम शाखा को सेट करता है, बशर्ते "शुरुआती बिंदु" एक शाखा का नाम है। यह स्थानीय और दूरस्थ "अपस्ट्रीम" के लिए काम करता है। लेकिन ध्यान दें कि यदि आप एक स्थानीय शाखा को शुरुआती बिंदु के रूप में चुनते हैं, तो यह आपको धक्का देने में मदद नहीं करेगा। वर्तमान रिपॉजिटरी से वर्तमान रिपॉजिटरी तक धक्का स्पष्ट रूप से समझ में नहीं आता है, और अस्वीकृत है।
इसलिए जब "अपस्ट्रीम" शाखा वास्तव में एक और स्थानीय शाखा होती है, तो P Pव्यवहार करता है जैसे कि कोई अपस्ट्रीम शाखा कॉन्फ़िगर नहीं हुई थी, और बिल्कुल उसी तरह व्यवहार करती है P e। यदि कोई अपस्ट्रीम कॉन्फ़िगर नहीं है तो भी यही स्थिति है।
Git में एक सीमा के कारण: यह केवल एक शाखा को किसी शाखा के साथ जोड़ सकता है , और उस शाखा को "अपस्ट्रीम" कहा जाता है। कम से कम एक "अपस्ट्रीम" और एक "पब्लिश" शाखा हो तो बेहतर होगा। मैं इसे अंततः मैगिट में लागू करने का इरादा रखता हूं। अंक # 1485 देखें ।
इसलिए यदि आप बस के साथ पुश करने में सक्षम होना चाहते हैं P Pतो "अपस्ट्रीम" शाखा को "मूल / मास्टर" होना चाहिए, न कि "मास्टर"।
मैं एक पुश संस्करण जोड़ने पर विचार कर रहा हूं, जो हमेशा git push
बिना किसी तर्क के चलता है। उसके बाद Git कॉन्फ़िगरेशन पर विशेष रूप से निर्भर करता है।
master
और यह अपस्ट्रीम सेट नहीं हुआ, क्या मुझे ब्रांच से origin/master
अपस्ट्रीम को अपने आप सेट करना चाहिए?
origin/master
सेट से ब्रांचिंग origin/master
, लेकिन मुझे अपस्ट्रीम के रूप में होने की उम्मीद होगी origin/branch-name
।
P -p P <... completion ...> RET
ध्यान दें कि origin/branch-name
एक पूर्ण उम्मीदवार के रूप में पेश किया जाता है, इसलिए आपको इसे टाइप करने की आवश्यकता नहीं है।
मैं निम्नलिखित सलाह का उपयोग करता हूं जो स्वचालित रूप से सक्षम करता है --set-upstream
जब वर्तमान शाखा में अभी तक कोई अपस्ट्रीम नहीं है:
(defun magit-push-arguments-maybe-upstream (magit-push-popup-fun &rest args)
"Enable --set-upstream switch if there isn't a current upstream."
(let ((magit-push-arguments
(if (magit-get-remote) magit-push-arguments
(cons "--set-upstream" magit-push-arguments))))
(apply magit-push-popup-fun args)))
(advice-add 'magit-push-popup :around #'magit-push-arguments-maybe-upstream)
Ido पूरा होने के साथ संयुक्त यह एक नई शाखा को आगे बढ़ाने की अनुमति देता है P P RET:
;; NOTE: requires ido-completing-read+
(setq magit-completing-read-function #'magit-ido-completing-read)
मैं बस के साथ नई शाखा बनाता हूं b c
और फिर .git/config
फ़ाइल को संपादित करने के origin/branch
बजाय सभी मैगिट 2 सामानों के साथ बंद करने के लिए इंगित करता हूं, जो वैसे भी काम नहीं करता है।
परिवर्तन:
[branch "fix_something"]
remote = .
merge = refs/heads/master
सेवा
[branch "fix_something"]
remote = origin
merge = refs/heads/fix_something
यह काम करता है, जबकि मुझे अभी भी magit2 में एक प्रमुख संयोजन नहीं मिला है जो समान कार्य को पूरा करता है। रिमोट सेट करने की कोशिश करना काम नहीं करता है क्योंकि यह अभी तक मूल पर मौजूद नहीं है।
bu
। लेकिन वह उपयोग करता है git branch --set-upstream-to
और जैसा कि आप जानते हैं कि गिट अपस्ट्रीम के रूप में एक गैर-मौजूद शाखा को सेट नहीं कर सकता है और इसलिए मैगिट या तो नहीं कर सकता है।
some-branch-name
को धक्का देते हैंorigin
, तो आप शायद सिर्फ टाइप कर सकते हैंo TAB s TAB
और आपको वह नाम मिलेगा जो आप चाहते हैं।