2013-02-21 94 views
7

मैं गिट के लिए नया हूँ, इसलिए क्षमा करें अगर इस प्रश्न का उत्तर पहले ही दिया जा चुका है। मुझे इसका जवाब खोजने में परेशानी हो रही है।स्विच किए गए शाखा के बाद .gitignore और खो गया। Gitinored फाइलें

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

क्या ये फ़ाइलें हटा दी गई हैं?

मैंने शाखा में वापस स्विच करने के लिए गिट चेकआउट का उपयोग किया और फिर गिट स्थिति - हस्ताक्षर किए। मेरी गायब फाइलें नहीं हैं।

+0

गिट फ़ाइलों को हटा नहीं देता है। 'Git ls-files' कमांड का प्रयोग करें और जांचें कि आपकी फाइलें सूचीबद्ध हैं या नहीं। –

+1

मैंने कोशिश की और मैंने अपनी फाइलें नहीं देखीं। मैं एक मैक पर हूं, और मैं उस खोज के माध्यम से message.sassc, और मेरी अन्य फाइलें ढूंढने में सक्षम था। अंत में "सी" हालांकि विस्तार का एक सामान्य हिस्सा नहीं है। –

+0

'गिट स्टेटस' आपकी फाइलें दिखाता है? –

उत्तर

1

आप पीएचए कोड प्राप्त करने के लिए git reflog -all का उपयोग करके ऐसा कर सकते हैं जब से अन्य शाखा में स्विच करने से पहले गिथब ऐप स्वचालित रूप से आपकी अनदेखी फ़ाइलों को छीन लेता है। https://stackoverflow.com/a/8865242/2970321 देखें।

उदाहरण के लिए, मैंने ऐप (SHA 2ba129d) का उपयोग करके पुल अनुरोध (/pr/364) प्राप्त किया। इससे पहले कि मैं gh-pages पर वापस स्विच किया, इससे मेरी अनदेखी फाइलें (SHA 36edfc6) छीन गईं।

finding the SHA code of a dropped stash

तो ठीक करने के लिए, सभी मुझे क्या करना जरूरी था:

git checkout 36edfc6

मेरे फ़ाइलें जादुई दोबारा प्रकट, और मैं सुरक्षित रूप gh-pages वापस करने के लिए स्विच करने से पहले कहीं और उन्हें मैन्युअल रूप से छिपाया जा पा रहा था फिर।

1

git उन फ़ाइलों को हटा नहीं देता है, जिन्हें विशेष रूप से ऐसा करने के लिए कहा जाता है (checkout -f द्वारा जांचने के कुछ मामलों में, या clean)। git उनके बारे में कुछ भी नहीं जानता है, यह उन्हें फिर से संचरित नहीं कर सकता है। चारों ओर घूमने और संभावित रूप से हानिकारक सामान करने से पहले git stash का उपयोग करें। सावधानी से विचार करें कि कौन सी फाइलें .gitignore में जाती हैं, सभी संस्करण नियंत्रण में गैर-स्वचालित रूप से जेनरेट की गई फ़ाइलें जोड़ें।

+0

ऐसा लगता है (कम से कम github ऐप के हाल के संस्करणों में) जो अनदेखा फाइलें स्वचालित रूप से शाखाओं को स्विच करते समय स्वचालित रूप से छीन ली जाती हैं। मेरा जवाब देखें – alexw

+0

"संस्करण नियंत्रण में सभी गैर-स्वचालित रूप से जेनरेट की गई फ़ाइलें जोड़ें।" हाँ! एकमात्र अपवाद डेटाबेस बैकअप जैसे वास्तव में बड़ी फ़ाइलें हो सकता है - इस स्थिति में इसे पूरी तरह से अलग फ़ोल्डर (या स्थायी रूप से अनदेखा उपफोल्डर) में संग्रहीत करना सबसे अच्छा है। – Venryx