रिमोट शाखा को हटाने के लिए Git कॉलन (: <शाखा>) का उपयोग क्यों करता है


81

Git का उपयोग क्यों करता है

git push <remote> :<branch>

जैसे की

git push origin :featureA

featureAदूरस्थ सर्वर से शाखा को हटाने के लिए ?

मुझे इस बात में दिलचस्पी है कि हटाए गए ध्वज के रूप में बृहदान्त्र का उपयोग क्यों किया गया था।

यह इससे बहुत अलग है git branch -d <localbranch>

हम कुछ ऐसा क्यों नहीं करते

git branch -d --remote origin <branchname>

या बृहदान्त्र प्रतीक के पीछे एक गहरा अर्थ है जो मुझे नहीं पता था?


3
दूरस्थ शाखाओं को हटाने के लिए, अब git push origin --delete foobar
प्रीटियर

जवाबों:


91

यह :प्रति सेवक का अर्थ नहीं है, लेकिन जो मौजूद है, या उसके पहले अनुपस्थित है।

Refspec प्रारूप है

<+><source>:<destination>

(गैर-फास्ट फॉरवर्ड के लिए वैकल्पिक +)

इसलिए जब आप कुछ ऐसा करते हैं git push origin :featureA, तो आप एक खाली स्रोत रेफ को निर्दिष्ट कर रहे हैं और मूल रूप से गंतव्य को "खाली" बना रहे हैं या इसे हटा रहे हैं।

पुनश्च: ध्यान दें कि :या कुछ भी नहीं की refspec मतलब कुछ भी नहीं करने के लिए धक्का कुछ भी नहीं है। यह "मिलान" शाखाओं को आगे बढ़ाने के लिए पकड़ बनाता है: स्थानीय तरफ मौजूद हर शाखा के लिए, दूरस्थ पक्ष को अद्यतन किया जाता है यदि उसी नाम की एक शाखा पहले से ही दूरस्थ पक्ष पर मौजूद है।


5
Git> = 1.7.0 एक दूरस्थ शाखा git push origin -d <branch>को हटाने और हटाने के लिए जोड़ा गया git push origin -D <branch>
रोज़बैन

तो इससे पहले कि आप कब कुछ डालेंगे:?
21

@ आईआईटीए जब आपकी स्थानीय शाखा का रिमोट से अलग नाम है।
15

20

बृहदान्त्र एक "ध्वज हटाएं" नहीं है। ध्यान दें कि गिट पुश और गिट पुल दोनों को शून्य या अधिक रीस्पेक को उनके अंतिम तर्क (ओं) के रूप में स्वीकार करते हैं। अब भाटा के बारे में पढ़ें । एक बृहदान्त्र एक स्रोत से गंतव्य को एक refspec में अलग करता है। कमांड के git push origin :fooपास एक खाली स्रोत है और अनिवार्य रूप से कहता है " मूल की शाखा कुछ भी नहीं धकेलें ", या, दूसरे शब्दों में, "मूल पर शाखा फू का अस्तित्व नहीं है"।


IMO, आपका उत्तर निम्नलिखित कारण के लिए प्रश्न का उत्तर नहीं देता है: यदि मैं एक शाखा को धक्का देने की कोशिश करता हूं जिसका इतिहास बदल दिया गया है, तो मुझे शाखा को धक्का देने के लिए मजबूर करना होगा। हालाँकि, शाखा का उपयोग करते समय हटाए जाने की स्थिति में ऐसा नहीं है :foo। एक खाली शाखा किसी मौजूदा दूरस्थ शाखा के साथ इतिहास साझा नहीं करती है और इसलिए यह नहीं हो सकता है, जिस तरह से मैं इसे देखता हूं, एक खाली शाखा के साथ एक मौजूदा दूरस्थ शाखा को अधिलेखित करता है। आपके उत्तर में कुछ गलत लगता है।
उमंग

3
@Uang: afaik, यह केवल एक वैचारिक बात है, और मैंने यह नहीं कहा कि "एक खाली शाखा को धक्का दें"। मैंने कहा "धक्का कुछ नहीं"। मैं आपके आकलन से असहमत नहीं हूं कि इसके सामने "+" के साथ अधिक समझ होगी, लेकिन यह सिर्फ यह है कि यह कैसे काम करता है। मेरे द्वारा पोस्ट किए गए रीस्पेक लिंक के अंतिम भाग को देखें , और तय करें कि आप लेखक पर भरोसा करते हैं।
रयान स्टीवर्ट

मुझे लगता है कि मैं अब थोड़ा बेहतर समझता हूं। धन्यवाद!
उमंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.