Anda dapat mengetahui apa yang Git lakukan dengan file dengan melihat apa yang dilakukannya ketika Anda menambahkannya ke indeks. Indeks seperti pra-komit. Dengan indeks yang dikomit, Anda dapat menggunakan git checkoutuntuk membawa semua yang ada di indeks kembali ke direktori kerja. Jadi, apa yang dilakukan Git ketika Anda menambahkan tautan simbolis ke indeks?
Untuk mengetahuinya, pertama, buat tautan simbolik:
$ ln -s /path/referenced/by/symlink symlink
Git belum tahu tentang file ini. git ls-filesmemungkinkan Anda memeriksa indeks Anda ( -shasil cetak statseperti):
$ git ls-files -s ./symlink
[nothing]
Sekarang, tambahkan konten tautan simbolik ke toko objek Git dengan menambahkannya ke indeks. Ketika Anda menambahkan file ke indeks, Git menyimpan kontennya di toko objek Git.
$ git add ./symlink
Jadi, apa yang ditambahkan?
$ git ls-files -s ./symlink
120000 1596f9db1b9610f238b78dd168ae33faa2dec15c 0 symlink
Hash adalah referensi ke objek dikemas yang dibuat di toko objek Git. Anda bisa memeriksa objek ini jika Anda mencari di .git/objects/15/96f9db1b9610f238b78dd168ae33faa2dec15croot repositori Anda. Ini adalah file yang disimpan Git di repositori, yang nanti bisa Anda periksa. Jika Anda memeriksa file ini, Anda akan melihatnya sangat kecil. Itu tidak menyimpan konten file yang ditautkan.
(Catatan 120000adalah mode yang tercantum dalam ls-filesoutput. Ini akan menjadi sesuatu seperti 100644untuk file biasa.)
Tapi apa yang dilakukan Git dengan objek ini ketika Anda memeriksanya dari repositori dan ke sistem file Anda? Itu tergantung pada core.symlinkskonfigurasi. Dari man git-config:
core.symlinks
Jika salah, tautan simbolik diperiksa sebagai file biasa berukuran kecil yang berisi teks tautan.
Jadi, dengan tautan simbolik dalam repositori, saat checkout Anda mendapatkan file teks dengan referensi ke path sistem file lengkap, atau tautan simbolik yang tepat, tergantung pada nilai core.symlinkskonfigurasi.
Bagaimanapun, data yang dirujuk oleh symlink tidak disimpan dalam repositori.
.gitignoremelihat symlink sebagai file, bukan folder.