क्या .git फ़ोल्डर में वास्तव में आपकी फ़ाइलें होती हैं?


1

सिद्धांत रूप में, यदि आपने .gitफ्लैश ड्राइव में बस फ़ोल्डर का समर्थन किया है और कुछ रूज उपयोगकर्ता ने आपके पीसी में अपने सभी प्रोजेक्ट फ़ाइलों को हटा दिया है, तो क्या आप अभी भी .gitअपने फ्लैश ड्राइव में उस फ़ोल्डर से अपनी फ़ाइलों को पुनर्स्थापित कर सकते हैं ?

नोट: यह सिर्फ एक स्थानीय रेपो परिदृश्य के लिए है, मुझे लगता है कि आप ऑनलाइन रेपो से खींच सकते हैं।

जवाबों:


4

हाँ, यह सबसे। .gitफ़ोल्डर पूरा भंडार इतिहास (सभी करता और उनकी सामग्री), और साथ ही मचान क्षेत्र (चीजें आप होती हैं git addएड लेकिन अभी तक प्रतिबद्ध नहीं)।

दरअसल, जब Git सर्वर रिपॉजिटरी को स्टोर करते हैं, तो वे सिर्फ .it फोल्डर ("नंगे" रिपॉजिटरी) का उपयोग करते हैं।

हालाँकि, इसमें विविध फ़ाइलों की प्रतियां शामिल नहीं हैं जिनके बारे में आपने अभी तक Git को नहीं बताया है। यदि आपने कुछ संपादन किए हैं, लेकिन git addउन्हें नहीं किया है, तो उन्हें .git / ऑब्जेक्ट्स / अभी तक कॉपी नहीं किया गया है।

फ़ाइलों को निकालने का तरीका है ( git checkout -fया git checkout <paths>जो काम करने वाले पेड़ पर मचान क्षेत्र की नकल करेगा)।


1

.gitएक परियोजना की निर्देशिका में आपके प्रतिबद्ध इतिहास के किसी भी संस्करण को पुनर्स्थापित करने के लिए पर्याप्त जानकारी होगी।


सिर्फ मनोरंजन के लिए, मैंने इसे स्थानीय रूप से चलाया:

cd <my local repo>
rm -r *
ls     # nothing there
ls -la # some dot files/directories
git checkout .
ls     # my stuff is back!

मेरा सारा सामान वापस आ गया था (कुछ अप्रत्याशित बदलावों को छोड़कर, संकलन आदि)


उस ने कहा, .it निर्देशिका में आपकी फ़ाइलों को पुनर्स्थापित करने के लिए पर्याप्त जानकारी होती है और यहां तक ​​कि आपका ऐतिहासिक कार्य भी।

देखें: https://git-scm.com/book/en/v2/Git-Internals-Pl पाइपलाइन- और- चीनी मिट्टी के बरतन


रेफरी कमिट नहीं हैं; वे शाखाएं हैं (अच्छी तरह से, जंगम प्रतिबद्ध लेबल)। तार्किक रूप से प्रत्येक कमिट हर फाइल को पूर्ण रूप से स्टोर करता है , हालांकि अंतर्निहित स्टोरेज फॉर्मेट गैटिटेशन और संपीड़न का ध्यान रखता है और बाकी जीआईटी के लिए अदृश्य रूप से।
ग्रेविटी

अच्छी बात है, मैंने शब्दांकन अपडेट किया। मैं यह बताने की कोशिश कर रहा था कि आपके पास अभी भी इतिहास में आपके सभी कमिट्स तक पहुंच होगी, लेकिन व्यक्तिगत रूप से आपके git इतिहास की हर पूरी फ़ाइल को संग्रहीत नहीं कर रहे हैं।

0

आप जिस बारे में बात कर रहे हैं वह 'नंगे' भंडार के रूप में जाना जाता है।

संक्षेप में, .gitनिर्देशिका में उस रिपॉजिटरी में ट्रैक किए गए सभी संशोधनों के सभी डेटा शामिल हैं। इसमें चेकआउट के लिए कार्यशील निर्देशिका को फिर से संगठित करने के लिए आवश्यक सभी डेटा शामिल हैं।

इस वजह से, यदि आप रिपॉजिटरी की अलग-अलग फाइलों तक कभी नहीं पहुंचेंगे, लेकिन केवल रिपॉजिटरी को क्लोन कर सकते हैं या इससे पुश या पुल कर सकते हैं, तो आप केवल .gitडायरेक्टरी होने से संभावित बड़ी मात्रा में स्पेस बचा सकते हैं ।

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