Git
Chapters ▾ 2nd Edition

10.1 Git’in Daxili İşləri - Plumbing və Porcelain

Bu fəslə daha əvvəlki bir fəsildən keçib gəlmiş ola bilərsiz və ya bütün kitabı bu vaxta qədər ardıcıl oxuduqdan sonra buraya gəlmiş ola bilərsiz - hər iki halda da Git’in daxili işlərini və tətbiqini nəzərdən keçirəcəyik. Bu məlumatları başa düşməyin Git’in nə qədər faydalı və güclü olduğunu qiymətləndirmək üçün nə qədər vacib olduğunu gördük, lakin başqaları bunun yeni başlayanlar üçün qarışıq və lazımsız dərəcədə mürəkkəb ola biləcəyini iddia edirlər. Beləliklə, bu müzakirəni kitabdakı son fəsildə etdik ki, öyrənmə müddətində erkən və ya sonra oxuya biləsiniz. Qərar verməyi sizin ixtiyarınıza veririk.

İndi isə buradasınız, başlayaq. Birincisi, hələ aydın deyilsə, Git, üstündə bir VNS istifadəçi interfeysi ilə məzmunla əlaqəli bir fayl sistemidir. Bunun nə demək olduğunu bir azdan öyrənəcəksiniz.

Git’in ilk günlərində (əksərən əvvəl 1.5) istifadəçi interfeysi cilalanmış bir VNS əvəzinə bu fayl sistemini vurğuladığı üçün daha mürəkkəb idi. Son bir neçə ildə, istifadəçi interfeysi, orada olan hər hansı bir sistem qədər təmiz və istifadəsi asan olana qədər təmizləndi; Bununla birlikdə, stereotip mürəkkəb və öyrənilməsi çətin olan ilk Git UI ilə əlaqədardır.

Məzmunun ünvanlandığı fayl sistemi təbəqəsi qəribə dərəcədə cool-dur, buna görə əvvəlcə bu fəsildə əhatə edəcəyik; sonra nəqliyyat mexanizmləri və nəticədə həll edə biləcəyiniz deponun saxlanılması tapşırıqlarını öyrənəcəksiniz.

Plumbing və Porcelain

Bu kitab, ilk növbədə Git’i 30-a yaxın checkout, branch, remote və s. kimi alt komanda ilə necə istifadə edəcəyimizi əhatə edir. Ancaq Git əvvəlcə tam user-friendly bir VNS əvəzinə versiya nəzarət sistemi üçün bir vasitə dəsti olduğundan, aşağı səviyyəli iş görən və UNIX tərzində zəncirlənmək və ya skriptlərdən çağırılmaq üçün hazırlanmış bir sıra alt komanda var. Bu əmrlərə ümumiyyətlə Git-in “plumbing” əmrləri deyilir, daha çox user-friendly əmrlərə isə “porcelain” əmrləri deyilir.

İndiyə qədər fərq etdiyiniz kimi bu kitabın ilk doqquz fəsli demək olar ki, yalnız porcelain əmrləri ilə əlaqədardır. Ancaq bu fəsildə əsasən aşağı səviyyəli plumbing əmrləri ilə məşğul olacaqsınız, çünki bunlar sizə Gitin daxili işlərinə giriş imkanı verir və Git-in necə və niyə etdiyini göstərməyə kömək edir. Bu əmrlərin əksəriyyəti əmr sətrində manual olaraq istifadə olunmaq üçün deyil, daha çox yeni alətlər və xüsusi skriptlər üçün bloklar kimi istifadə olunur.

Yeni və ya mövcud bir qovluqda git init işlətdiyinizdə Git Gitin saxladığı və idarə etdiyi hər şeyin yerləşdiyi .git qovluğunu yaradır. Deponuzun back up-nı çıxarmaq və ya klonlamaq istəyirsinizsə, bu tək qovluğu başqa yerə kopyalamaq sizə lazım olan hər şeyi verir. Bu fəslin hamısı, əsasən bu qovluqda görə biləcəyiniz şeylərdən bəhs edir. Yeni başlatılmış .git qovluğunun adətən belə görünür:

$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/

Git versiyanızdan asılı olaraq orada bir neçə əlavə məzmun görə bilərsiniz, ancaq bu təzə bir git init deposudur - varsayılan olaraq gördüyünüz budur. Description faylı yalnız GitWeb proqramı tərəfindən istifadə olunur, buna görə narahat olmayın. Config faylı proyektə xüsusi konfiqurasiya seçimlərinizi ehtiva edir və info qovluğu ``.gitignore` faylında izləmək istəmədiyiniz ignored pattern-lər üçün qlobal bir xaric sənədini (excludes saxlayır. hooks qovluğu, Git Hook’ları bölməsində ətraflı müzakirə olunan müştəri və ya server tərəfindəki hook skriptlərinizi ehtiva edir.

Bu dörd vacib giriş buraxır: HEAD və (hələ yaradılmayacaq) index faylları və objectrefs qovluqları. Bunlar Gitin əsas hissələridir. Object qovluğu verilənlər bazanızdakı bütün məzmunu, refs qovluğu göstəriciləri həmin məlumatdakı obyektləri (branch-lar, etiketlər, remote-lar və daha çox) saxlayır, HEAD faylı hazırda yoxladığınız branch-ı göstərir və index faylı Git-in səhnələşdirmə sahəsi məlumatlarınızı saxladığı yerdir. İndi Git’in necə işlədiyini görmək üçün bu hissələrin hər birinə ətraflı baxacaqsınız.