গিট কোনও ফাইলের সাথে কী করে তা আপনি সূচীতে যুক্ত করার পরে এটি কী করে তা খুঁজে পেতে পারেন। সূচকটি একটি পূর্ব-প্রতিশ্রুতি মত। প্রতিশ্রুতিবদ্ধ প্রতিশ্রুতিবদ্ধতার সাথে, আপনি সূচীতে git checkout
যা কিছু ছিল তা কার্যকারী ডিরেক্টরিতে ফিরিয়ে আনতে ব্যবহার করতে পারেন । সুতরাং, আপনি যখন সূচকে একটি প্রতীকী লিঙ্ক যুক্ত করবেন তখন গিট কী করবে?
এটি জানতে, প্রথমে একটি প্রতীকী লিঙ্ক তৈরি করুন:
$ ln -s /path/referenced/by/symlink symlink
গিট এই ফাইলটি সম্পর্কে এখনও জানে না। git ls-files
আপনাকে আপনার সূচিটি পরীক্ষা করতে দেয় ( -s
প্রিন্টগুলির stat
মতো আউটপুট):
$ git ls-files -s ./symlink
[nothing]
এখন, গিট অবজেক্ট স্টোরে প্রতীকী লিঙ্কের বিষয়বস্তুগুলি সূচকে যুক্ত করে যুক্ত করুন। আপনি যখন সূচীতে কোনও ফাইল যুক্ত করেন, গিট তার বিষয়বস্তুগুলি গিট অবজেক্ট স্টোরে সংরক্ষণ করে।
$ git add ./symlink
তো, কী যুক্ত হয়েছিল?
$ git ls-files -s ./symlink
120000 1596f9db1b9610f238b78dd168ae33faa2dec15c 0 symlink
হ্যাশটি প্যাকেটজাত বস্তুর একটি উল্লেখ যা গিট অবজেক্ট স্টোরটিতে তৈরি হয়েছিল। আপনি যদি .git/objects/15/96f9db1b9610f238b78dd168ae33faa2dec15c
আপনার সংগ্রহস্থলের মূলটি দেখেন তবে আপনি এই বস্তুটি পরীক্ষা করতে পারেন । গিটটি সেই ফাইলটি সংগ্রহস্থলীতে সঞ্চয় করে যা আপনি পরে পরীক্ষা করে দেখতে পারেন। আপনি যদি এই ফাইলটি পরীক্ষা করেন তবে দেখতে পাবেন এটি খুব ছোট। এটি লিঙ্কযুক্ত ফাইলের সামগ্রী সংরক্ষণ করে না।
(দ্রষ্টব্য আউটপুটে 120000
তালিকাভুক্ত মোড ls-files
It এটি 100644
নিয়মিত ফাইলের মতো কিছু হবে ))
কিন্তু গিট এই বস্তুর সাথে কী করবে যখন আপনি এটি সংগ্রহস্থল থেকে এবং আপনার ফাইল সিস্টেমে পরীক্ষা করে দেখেন? এটি core.symlinks
কনফিগারেশনের উপর নির্ভর করে । থেকে man git-config
:
core.symlinks
যদি মিথ্যা হয়, প্রতীকী লিঙ্কগুলি ছোট প্লেইন ফাইল হিসাবে চেক আউট হয়ে থাকে যা লিঙ্কটির পাঠ্য ধারণ করে।
সুতরাং, সংগ্রহস্থলের একটি প্রতীকী লিঙ্ক সহ, চেকআউট করার পরে আপনি একটি সম্পূর্ণ ফাইল সিস্টেমের পাথের উল্লেখ সহ একটি পাঠ্য ফাইল পাবেন বা core.symlinks
কনফিগারেশনের মানের উপর নির্ভর করে একটি সঠিক প্রতীকী লিঙ্ক পাবেন ।
যে কোনও উপায়ে, সিমলিংক দ্বারা রেফারেন্স করা ডেটা সংগ্রহস্থলে সংরক্ষণ করা হয় না।
.gitignore
সিমলিংকটিকে কোনও ফোল্ডার নয় ফাইল হিসাবে দেখায়।