2010-07-23 15 views
16

खींचते समय किसी अन्य उपयोगकर्ता की कार्यरत पेड़ फ़ाइलों को हटा देगा, मैं फ़ाइलों को ट्रैक करना बंद करना चाहता हूं लेकिन फिर भी उन्हें अपने काम करने वाले पेड़ में रखना चाहता हूं।क्या git-rm --cached

मैंने इकट्ठा किया है कि git rm --cached FILE मुझे ऐसा करने देगा। हालांकि, अगर कोई और इस परिवर्तन को खींचता है, तो उनके स्थानीय प्रतियों को हटा दिया जाएगा?

+0

उन्हें अपने .gitignore में जोड़ने के संयोजन में, मुझे उम्मीद है! – Cascabel

+0

हां। जो मुझे आश्चर्यचकित कर रहा है कि क्या होता है यदि आप उन्हें गिटिनोरोर में जोड़ते हैं और उन्हें आरएम नहीं देते हैं ... – rod

+0

यह निश्चित रूप से अन्य प्रश्नों पर चर्चा की गई थी; क्या होता है ... कुछ भी नहीं। –

उत्तर

8

हां, उनकी प्रतियां स्वचालित रूप से हटा दी जाएंगी। कल्पना करें कि यह विलोपन नहीं होगा - तो सभी उपयोगकर्ताओं की कामकाजी प्रतियां हटाए गए फाइलों के ढेर के साथ प्रदूषित हो जाएंगी, जिनकी अब आवश्यकता नहीं है।

हालांकि, अगर दूरस्थ उपयोगकर्ताओं ने इन फ़ाइलों में स्थानीय परिवर्तन किए हैं, तो उन्हें हटाया नहीं जाएगा, क्योंकि pull के परिणामस्वरूप एक विलय संघर्ष होगा।

Jefromi उनकी टिप्पणी में सुझाव देता है, जबकि अन्य उपयोगकर्ताओं के पक्षों में फ़ाइलों को हटा दिया जाता है, उन्हें आसानी से बहाल किया जा सकता है - वे संस्करण-नियंत्रण में हैं, है ना? ;-) फ़ाइलों को git checkout <revision> -- <files...> द्वारा प्राप्त किया जा सकता है। संशोधन के रूप में आप पिछले की आईडी के लिए प्रतिबद्ध, खींचने के लिए यह ORIG_HEAD में सहेजी गई है निर्दिष्ट कर सकता है (विवरण के लिए this question देखें):

git checkout ORIG_HEAD -- removed_file 
+1

और यदि पुल संघर्ष नहीं करता है, लेकिन वे फ़ाइलों को वापस चाहते हैं, तो उन्हें केवल 'गिट चेकआउट HEAD^ 'करना है। – Cascabel

+0

धन्यवाद, यही मुझे जानने की जरूरत है। फिंगर्स पार हो गए मैंने अपने सहयोगियों की कार्यशील निर्देशिकाओं पर किसी भी महत्वपूर्ण xcode फ़ाइलों को नहीं हटाया। – rod

1

ऐसी स्थिति में मैं नहीं बल्कि उन्हें स्थानीय स्तर पर उपेक्षा होगा केवल:

वे पहले से ही पता लगाया जाता है, तो:

git update-index --skip-worktree FILE 

अगर वे ट्रैक न किए गए: उन्हें अपने स्थानीय करने के लिए जोड़ को बाहर फ़ाइल

echo "FILE" >> .git/info/exclude 

आप वैश्विक भी हो सकते हैं .gitignore अगर आप अपने सभी repos के लिए ऐसा करेंगे (उदा। * ~

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