Sobes.tech
Junior

Yadda commit-də simvolu dəyişdirmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Bir commitdəki simvolu dəyişdirmək üçün bir neçə üsul mövcuddur:

  1. Son commit'i dəyişdirmək (hələ göndərilməyib):

    Siz git commit --amend əmrindən istifadə edə bilərsiniz. Bu, son commit mesajını dəyişdirməyə və ya faylları əlavə/siləməyə imkan verir.

    # Son commit mesajını dəyişdirmək
    git commit --amend -m "Başqa simvol ilə yeni commit mesajı"
    

    Bu əmri icra etdikdən sonra, commit mesajını redaktə etmək üçün mətn redaktoru açılacaq.

  2. Köhnə commitləri dəyişdirmək (interaktiv rebase istifadə edərək):

    Bu üsul daha mürəkkəbdir, amma hər hansı bir commit'i tarixdə dəyişdirməyə imkan verir. Bu əmrin istifadəsi tarixi yenidən yazır, ona görə də artıq paylaşılmış və digər şəxslərin işlədiyi repository-də bu əməliyyat tövsiyə edilmir.

    # Dəyişdirmək istədiyiniz commitdən əvvəlki commitdən interaktiv rebase başlatmaq
    git rebase -i HEAD~N  # burada N, HEAD-dən geri sayını göstərir
    

    Bu əmri icra etdikdən sonra, son N commit-in siyahısı ilə mətn redaktoru açılacaq. Dəyişdirmək istədiyiniz commit-i tapın və onun önündəki pick sözünü reword və ya r ilə dəyişdirin.

    Redaktoru yadda saxlayın və bağlayın. Git, reword ilə işarələnmiş hər commit mesajını dəyişəcək.

    Interaktiv rebase üçün nümunə məzmun:

    pick a1b2c3d Commit 1: Orijinal mesaj
    pick e4f5g6h Commit 2: Başqa mesaj
    pick i7j8k9l Commit 3: Dəyişdiriləcək commit
    

    Bunu aşağıdakı kimi dəyişdirin:

    pick a1b2c3d Commit 1: Orijinal mesaj
    pick e4f5g6h Commit 2: Başqa mesaj
    reword i7j8k9l Commit 3: Dəyişdiriləcək commit
    

    Yadda saxlayın və bağlayın, Git üçüncü commit-də dayanacaq və mesajını dəyişməyinizi istəyəcək.

  3. git filter-branch istifadə etmək (daha mürəkkəb transformasiyalar üçün):

    Bu üsul daha güclüdür, amma ehtiyatlı olmaq lazımdır. Bu, hər commitə skript tətbiq etməklə tarixi yenidən yazır. Bu, commit mesajlarındakı simvolları kütləvi dəyişdirmək üçün istifadə edilə bilər.

    # `_` simvolunu `-` ilə dəyişdirmək üçün filter-branch nümunəsi
    git filter-branch --msg-filter 'sed "s/_/-/"' -- --all
    

    Bu, bütün budaqların tarixçəsini yenidən yazır. Çox ehtiyatlı istifadə edin!

Vacib qeyd: Artıq göndərilmiş commitlərin tarixçəsini dəyişdirmək digər inkişafçılara problem yarada bilər. Onlar öz lokal repository-lərini dəyişdirilmiş tarixlə sinxronlaşdırmalı olacaq, bu isə zorla çəkmə (git pull --rebase) və ya sıfırlama (git fetch && git reset --hard origin/branch) tələb edə bilər.

Əgər commit artıq göndərilibsə, tarixçəni yenidən yazmaq yerinə, yeni commit etmək tövsiyə olunur.