2011-09-05 9 views
58

मैं क्यों Git आदेश उपयोगक्यों Git पेट का उपयोग करें: दूरस्थ शाखा को हटाने के लिए

git push <remote> :<branch> git push origin :featureA तरह दूरस्थ सर्वर में featureA शाखा को नष्ट करने के बारे में सोच रहा ( )। मुझे रूचि है कि कोलन को हटाए गए झंडे के रूप में क्यों बनाते हैं। यह इतना

git branch -d <localbranch>

से अंतर नहीं है क्यों नहीं बनाते हैं

git branch -d --remote origin <branchname>

या पेट के प्रतीक है कि मैंने पहले कभी पता नहीं के गहरे अर्थ देखते हैं की तरह कुछ?

+3

रिमोट शाखाओं को हटाने के लिए, अब एक सुंदर वाक्यविन्यास है ['गिट पुश मूल - डिलीट फूओबर'] (http://git-scm.com/book/ch3-5.html#Deleting-Remote- शाखाएं) – quetzalcoatl

उत्तर

61

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

refspec प्रारूप "खाली (के लिए गैर तेजी से आगे वैकल्पिक +)

<+><source>:<destination> 

है

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

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

+2

गिट> = 1.7.0 ने 'गिट पुश मूल-डी ' को हटाने और रिमोट शाखा को हटाने के लिए 'गीट पुश मूल-डी ' को जोड़ने के लिए जोड़ा। – robsn

18

कोलन "ध्वज हटाएं" नहीं है। ध्यान दें कि git push और git pull दोनों अंतिम अंतिम तर्क के रूप में शून्य या अधिक refspecs स्वीकार करते हैं। अब read about refspecs। एक कोलन एक स्रोत को गंतव्य से गंतव्य से अलग करता है। आदेश git push origin :foo में एक खाली स्रोत है और अनिवार्य रूप से "पुश कुछ भी मूल की शाखा foo में" या, दूसरे शब्दों में, "मूल पर शाखा foo को अस्तित्व में नहीं बनाते" कहते हैं।

+0

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

+3

@ उमांग: afaik, यह केवल एक वैचारिक बात है, और मैंने नहीं कहा "एक खाली शाखा धक्का"। मैंने कहा "कुछ भी धक्का नहीं"। मैं आपके आकलन से असहमत नहीं हूं कि इससे पहले "+" के साथ अधिक समझदारी होगी, लेकिन यह वही है जो यह काम करता है। मेरे द्वारा पोस्ट किए गए रेफस्पेक्स लिंक के [अंतिम अनुभाग] (http://progit.org/book/ch9-5.html#deleting_references) देखें, और यह तय करें कि आप लेखक पर भरोसा करते हैं या नहीं। –

+0

मुझे लगता है कि अब मैं थोड़ा बेहतर समझता हूं। धन्यवाद! – Umang

संबंधित मुद्दे