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 checkout
her ş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-files
indeksinizi incelemenizi sağlar ( -s
baskı stat
benzeri çı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/96f9db1b9610f238b78dd168ae33faa2dec15c
kö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 . 100644
Normal bir dosyaya benzer.)
Ancak Git depodan ve dosya sisteminize baktığınızda bu nesne ile ne yapar? core.symlinks
Yapı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.symlinks
yapı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.
.gitignore
simge bağlantısını klasör değil dosya olarak görür.