मैगिट को यह पूछने से कैसे रोकें कि एक शाखा को कहां धकेलना है?


10

स्टेटस बफर से कॉल magit-push-currentकरने P Pपर, Magit 2.1.0मुझसे पूछता है कि पहली बार ब्रांच को कहां पुश करना है, जब अपस्ट्रीम सेट नहीं है।

यह अपने आप ही नाम कैसे उत्पन्न कर सकता है जैसा कि पहले हुआ करता था?


2
यदि आपको पता नहीं है, तो स्वतः-निर्मित नाम पूर्ण विकल्पों में से एक है। इसलिए, पहली बार जब आप रिमोट some-branch-nameको धक्का देते हैं origin, तो आप शायद सिर्फ टाइप कर सकते हैं o TAB s TABऔर आपको वह नाम मिलेगा जो आप चाहते हैं।
मालाबार

ओह ठीक है मुझे नहीं पता था, धन्यवाद। समस्या यह है कि मेरे पास एक ही उपसर्ग के साथ शुरू होने वाली बहुत सारी शाखाएं हैं, जो बहुत आसान नहीं है, मैं हमेशा स्थानीय शाखाओं के समान नाम वाली दूरस्थ शाखाओं पर भी डाल देता हूं।
z1naOK9nu8iY5A 14

जवाबों:


8

अद्यतन: नीचे दी गई "पुश शाखा" को अब तक लागू कर दिया गया है । अधिक जानकारी के लिए शाखाओं के बारे में दस्तावेज देखें।

आपको एक बार अपस्ट्रीम ब्रांच को सेट करना होगा। एक बार जब आप यह है कि किया है 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अपस्ट्रीम को अपने आप सेट करना चाहिए?
z1naOK9nu8iY5A

अद्यतन उत्तर देखें।
तारसियस

1
अपस्ट्रीम के रूप में origin/masterसेट से ब्रांचिंग origin/master, लेकिन मुझे अपस्ट्रीम के रूप में होने की उम्मीद होगी origin/branch-name
z1naOK9nu8iY5A

यदि आप चाहते हैं तो यह धक्का के दौरान करना सबसे अच्छा है। P -p P <... completion ...> RETध्यान दें कि origin/branch-nameएक पूर्ण उम्मीदवार के रूप में पेश किया जाता है, इसलिए आपको इसे टाइप करने की आवश्यकता नहीं है।
तारसियस

2
जब आप gitflow का उपयोग कर रहे हैं और कोड समीक्षा के लिए अनुरोधों को खींच रहे हैं तो यह दर्दनाक है, प्रति सुविधा वाली शाखा के साथ, क्योंकि आप आमतौर पर कभी केवल एक बार धक्का देते हैं, और यह हमेशा स्थानीय शाखा के समान नाम के साथ एक दूरस्थ शाखा बनाने के लिए होता है। एक अलग नामित शाखा में धक्का कोड की समीक्षा के आसपास एक अंतिम रन होगा।
बैरी केली

3

मैं निम्नलिखित सलाह का उपयोग करता हूं जो स्वचालित रूप से सक्षम करता है --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)

यह बहुत अच्छा है! आपका बहुत बहुत धन्यवाद!
z1naOK9nu8iY5A

0

मैं बस के साथ नई शाखा बनाता हूं 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 में एक प्रमुख संयोजन नहीं मिला है जो समान कार्य को पूरा करता है। रिमोट सेट करने की कोशिश करना काम नहीं करता है क्योंकि यह अभी तक मूल पर मौजूद नहीं है।


1
अपस्ट्रीम का उपयोग करके सेट किया जा सकता है bu। लेकिन वह उपयोग करता है git branch --set-upstream-toऔर जैसा कि आप जानते हैं कि गिट अपस्ट्रीम के रूप में एक गैर-मौजूद शाखा को सेट नहीं कर सकता है और इसलिए मैगिट या तो नहीं कर सकता है।
वृषभ

@tarsius magit 1 को वह करने की आवश्यकता थी जो मुझे इसकी आवश्यकता थी। मैं बस उस वर्कफ़्लो के कुछ झलक पाने की कोशिश कर रहा हूँ।
डेविड एन। वेल्टन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.