Git'in bir dosyayla ne yaptığını, dizine eklediğinizde ne yaptığını görebilirsiniz. Endeks bir ön taahhüt gibidir. Dizin işlendiğinde, dizindeki git checkouther şeyi çalışma dizinine geri getirmek için kullanabilirsiniz . Peki Git, dizine sembolik bir bağlantı eklediğinizde ne yapar?
Öncelikle, sembolik bir bağlantı yapın:
$ ln -s /path/referenced/by/symlink symlink
Git bu dosya hakkında henüz bir şey bilmiyor. git ls-filesindeksinizi incelemenizi sağlar ( -sbaskı statbenzeri çıktı):
$ git ls-files -s ./symlink
[nothing]
Şimdi, sembolik bağlantının içeriğini Git nesne deposuna dizine ekleyerek ekleyin. Dizine bir dosya eklediğinizde Git, içeriğini Git nesne deposunda depolar.
$ git add ./symlink
Peki ne eklendi?
$ git ls-files -s ./symlink
120000 1596f9db1b9610f238b78dd168ae33faa2dec15c 0 symlink
Karma, Git nesne deposunda oluşturulan paketlenmiş nesneye bir referanstır. Deponuzun .git/objects/15/96f9db1b9610f238b78dd168ae33faa2dec15cköküne bakarsanız bu nesneyi inceleyebilirsiniz . Git'in depoda depoladığı, daha sonra kontrol edebileceğiniz dosyadır. Bu dosyayı incelerseniz, çok küçük olduğunu görürsünüz. Bağlı dosyanın içeriğini saklamaz.
(Not 120000, ls-filesçıktıda listelenen moddur . 100644Normal bir dosyaya benzer.)
Ancak Git depodan ve dosya sisteminize baktığınızda bu nesne ile ne yapar? core.symlinksYapılandırmaya bağlıdır . Gönderen man git-config:
core.symlinks
Yanlışsa, sembolik bağlantılar, bağlantı metnini içeren küçük düz dosyalar olarak kullanıma alınır.
Bu nedenle, depodaki sembolik bir bağlantı ile, ödeme yapıldıktan sonra, core.symlinksyapılandırmanın değerine bağlı olarak tam bir dosya sistemi yoluna referansla bir metin dosyası veya uygun bir sembolik bağlantı alırsınız .
Her iki durumda da, sembolik bağlantı tarafından başvurulan veriler depoda saklanmaz.
.gitignoresimge bağlantısını klasör değil dosya olarak görür.