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:
-
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.
-
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ərirBu ə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
picksözünürewordvə yarilə dəyişdirin.Redaktoru yadda saxlayın və bağlayın. Git,
rewordilə 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 commitBunu 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 commitYadda saxlayın və bağlayın, Git üçüncü commit-də dayanacaq və mesajını dəyişməyinizi istəyəcək.
-
git filter-branchistifadə 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/_/-/"' -- --allBu, 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.