आप यह जान सकते हैं कि एक फ़ाइल के साथ Git क्या करता है यह देखकर कि यह क्या करता है जब आप इसे सूचकांक में जोड़ते हैं। सूचकांक पूर्व की तरह है। सूचकांक के साथ, आप उपयोग कर सकते हैंgit checkout चीजों को लाने के लिए जो इंडेक्स में वापस काम कर रहे डायरेक्टरी में थे। जब आप सूचकांक में एक प्रतीकात्मक लिंक जोड़ते हैं, तो Git क्या करता है?
यह जानने के लिए, पहले, एक प्रतीकात्मक लिंक बनाएं:
$ ln -s /path/referenced/by/symlink symlink
Git को अभी तक इस फ़ाइल के बारे में पता नहीं है। git ls-filesआपको अपने सूचकांक ( -sप्रिंट्स stat-जैसे आउटपुट) का निरीक्षण करने देता है :
$ git ls-files -s ./symlink
[nothing]
अब, इंडिक लिंक की सामग्री को अनुक्रमणिका में जोड़कर Git ऑब्जेक्ट स्टोर में जोड़ें। जब आप अनुक्रमणिका में एक फ़ाइल जोड़ते हैं, तो Git अपनी सामग्री को Git ऑब्जेक्ट स्टोर में संग्रहीत करता है।
$ git add ./symlink
तो, क्या जोड़ा गया था?
$ git ls-files -s ./symlink
120000 1596f9db1b9610f238b78dd168ae33faa2dec15c 0 symlink
हैश पैक्ड ऑब्जेक्ट का एक संदर्भ है जो गिट ऑब्जेक्ट स्टोर में बनाया गया था। यदि आप .git/objects/15/96f9db1b9610f238b78dd168ae33faa2dec15cअपने भंडार के मूल में देखते हैं तो आप इस वस्तु की जांच कर सकते हैं । यह वह फाइल है जिसे Git भंडार में संग्रहीत करता है, जिसे आप बाद में देख सकते हैं। यदि आप इस फ़ाइल की जांच करते हैं, तो आप देखेंगे कि यह बहुत छोटा है। यह लिंक की गई फ़ाइल की सामग्री को संग्रहीत नहीं करता है।
(नोट आउटपुट 120000में सूचीबद्ध मोड है ls-files। यह 100644एक नियमित फ़ाइल के लिए कुछ ऐसा होगा ।)
लेकिन जब आप इसे भंडार से और अपने फाइल सिस्टम में जांचते हैं तो इस वस्तु के साथ Git क्या करता है? यह core.symlinksविन्यास पर निर्भर करता है । से man git-config:
core.symlinks
यदि गलत है, तो प्रतीकात्मक लिंक को छोटे सादे फाइलों के रूप में जांचा जाता है, जिसमें लिंक टेक्स्ट होता है।
इसलिए, रिपॉजिटरी में एक प्रतीकात्मक लिंक के साथ, चेकआउट पर आपको या तो पूर्ण फाइल सिस्टम पथ के संदर्भ में एक पाठ फ़ाइल मिलती है, या core.symlinksकॉन्फ़िगरेशन के मूल्य के आधार पर एक उचित प्रतीकात्मक लिंक ।
किसी भी तरह से, सिम्लिंक द्वारा संदर्भित डेटा भंडार में संग्रहीत नहीं किया जाता है।
.gitignoreसिम्लिंक को एक फाइल के रूप में देखता है एक फ़ोल्डर नहीं।