Junior
Squash nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Git-də squash (sıkıştırma), bir neçə commit-in birləşdirilməsidir. Bu, commit tarixçəsini sadələşdirməyə, onu daha nizamlı və oxunaqlı etməyə imkan verir.
Əsasən, squash aşağıdakı hallarda həyata keçirilir:
- Xüsusiyyət şaxəsinin əsas şaxə ilə birləşdirilməsi (feature branch merge). Qısa şaxə çox kiçik commit-lərlə (düzəlişlər, kosmetik dəyişikliklər) böyük bir commit-ə çevrilə bilər, bu da bütün funksionallığı təmsil edir.
- Commit tarixçəsinin redaktəsi (interaktiv rebase). Bu, ardıcıl commit-ləri birləşdirməyə və dəyişiklikləri daha təmiz təqdim etməyə imkan verir.
Squash prosesi adətən aşağıdakı mərhələləri əhatə edir:
- Commit-lərin seçilməsi: Birləşdiriləcək commit-lərin diapazonunu müəyyən etmək.
- Redaktə (interaktiv rebase):
git rebase -i <diapazon əvvəlki commit>və yagit rebase -i HEAD~<commit sayı>əmrlərindən istifadə etmək. squashvə yasişarəsi: Açılan redaktorda, əvvəlki ilə birləşdiriləcək commit-lərisquashvə ya qısaldılmışsilə işarələmək. Siyahının ilk commit-ipickilə saxlanılır.- Mesajın redaktəsi: Git, yeni commit üçün mesaj yazmaq üçün redaktor açacaq.
- Dəyişikliklərin tətbiqi: Rebase tarixçəsini və yeni commit mesajını yadda saxladıqdan sonra, Git birləşdirməni həyata keçirəcək.
Son üç commit-i birləşdirmək üçün interaktiv rebase nümunəsi:
git rebase -i HEAD~3
# Redaktor açılır və aşağıdakı kimi sətirlər görünür:
# pick 08f66c1 Commit 1
# pick d7e8a23 Commit 2
# pick 1b2c3d4 Commit 3
# Bunu dəyiş:
# pick 08f66c1 Commit 1
# squash d7e8a23 Commit 2
# squash 1b2c3d4 Commit 3
# Yadda saxla və çıx. Sonra yeni commit mesajını redaktə et.
Squash-un üstünlükləri:
- Təmiz tarixçə: Kiçik commit-lərin sayını azaldır, dəyişikliklərin loglarını daha anlaşılan edir.
- Axtarışın asanlaşdırılması: Tarixçə daxilində vacib dəyişiklikləri tapmaq daha asandır.
- Geri alma rahatlığı: Bir böyük commit, çox kiçik commit-lərdən daha asan geri alınır.
Çatışmazlıqlar:
- Ətraflı məlumatın itirilməsi: Commit-lərin birləşdirilməsi, hər kiçik addım haqqında məlumatın itirilməsinə səbəb olur.
- Komanda işində çətinlik: Artıq göndərilmiş commit-ləri birləşdirmək, digər komanda üzvləri üçün push-larda konfliktlərə səbəb ola bilər. Paylaşılan commit-lər üçün
git push --forceistifadə etmək lazımdır və bu risklidir.
Squash istifadəsi diqqətlə düşünülməli və komanda siyasəti və layihənin xüsusiyyətlərinə bağlı olmalıdır.