2013-06-15 7 views
7

मेरे पास एक दूरस्थ भंडार और 2 क्लोन हैं।
मैं क्लोन में से एक में शाखा बना रहा हूं उदा। test। मैं कुछ काम करता हूं और 2 काम करता हूं। मैं master शाखा और push -u शाखा में विलय करता हूं।
मैं दूसरे क्लोन में git pull करता हूं।
मैं master और test दोनों देखता हूं।
पहली क्लोन प्रोजेक्ट में मैं करता हूं:
git origin :test रिमोट रिपोजिटरी पर test शाखा को हटाने के लिए।
test दूरस्थ रिपोज़ पर हटा दिया गया है।
मैं git branch -D test करता हूं और test शाखा स्थानीय रूप से भी हटा दी जाती है।
अगर मैं git branch -a करना मुझे मिलता है:मुझे हटाई गई दूरस्थ शाखा क्यों दिखाई दे रही है?

*master 
remotes/origin/master  

अब दूसरा भंडार में मैं एक git pull है।
खींचने पर स्थानीय test हटाया जाना प्रतीत होता है लेकिन git "सोच" लगता है कि रिमोट test शाखा अभी भी मौजूद है।
मैं अगर मैं git branch -a कर मिलती है:

* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 
    remotes/origin/test  

क्यों नष्ट कर दिया test शाखा एक दूरस्थ शाखा के रूप में प्रकट होता है?

उत्तर

3

इस आदेश का उपयोग करने का प्रयास करें git remote prune origin। हटाई गई शाखा गायब होनी चाहिए। इसे दूरस्थ शाखाओं के स्थानीय संदर्भों को हटा देना चाहिए।

+0

दरअसल मैं 'गिट' की उम्मीद कर रहा था ताकि वह मुझे ऐसा करने के लिए प्रेरित करे जैसा कि यह 'गिट पुल' करने के लिए संकेत देता है। यह क्यों संकेत नहीं देता? मैंने इसे संकेत दिया है लेकिन शायद यह एक अलग उपयोग मामले में था? – Cratylus

+0

हाँ, मुझे पता है तुम्हारा क्या मतलब है। मैं वास्तव में नहीं कह सकता कि मैंने पुल करने के दौरान गिट प्रॉम्प्ट को कुछ भी देखा है, इसलिए मुझे लगता है कि यह एक अलग उपयोग केस था। शायद हटाए गए शाखा में कुछ धक्का देने की कोशिश की? – crea1

10

git fetch (और इसके परिणामस्वरूप git pull) के लिए डिफ़ॉल्ट विकल्प हटाए गए दूरस्थ शाखाओं को प्रतिस्थापित नहीं करते हैं। मुझे यकीन नहीं है कि इस डिफ़ॉल्ट के पीछे तर्क क्या है। किसी भी मामले में, हटाए गए दूरस्थ शाखाओं छँटाई करने के लिए, या तो

git fetch -p 

साथ लाने या

git remote prune [-n] <name> 

स्पष्ट रूप से चलाते हैं। -n ध्वज के साथ, यह रिपोर्ट करेगा कि कौन सी शाखाओं को काट दिया जाएगा, लेकिन वास्तव में उन्हें छीन नहीं पाएंगे। अधिक जानकारी के लिए git-fetch(1) और git-remote(1) देखें।

+0

लेकिन अगर भंडार मेरा नहीं था तो मुझे कैसे पता चलेगा कि मुझे 'prune'' की आवश्यकता होगी? – Cratylus

+1

आप सूची प्राप्त करने के लिए 'git remote prune -n ​​ 'चला सकते हैं, लेकिन मैंने हर बार जब मैं प्राप्त करता हूं तो हमेशा' git fetch -p' चला रहा हूं। मुझे एहसास नहीं हुआ कि 'गिट पुल' पर इसके लिए कोई विकल्प नहीं था क्योंकि मैंने कभी भी 'गिट पुल' का उपयोग नहीं किया था। –

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