Əsas şaxədə (main branch) dəyişikliklərin üzərinə yazma necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
İstifadə edin git revert və ya git rebase ("interaktiv" rejimdə və ya git rebase --onto daha mürəkkəb ssenarilər üçün) və sonra git push -f.
git revert göstərilən commitlərin dəyişikliklərini ləğv edən yeni bir commit yaradır. Bu, tarixçəni qoruduğu üçün daha təhlükəsiz variantdır.
# Son commit-i ləğv et
git revert HEAD
# Xüsusi commit-i hash ilə ləğv et
git revert <commit-hash>
# Commitlər aralığını ləğv et (sonuncu istisna olmaqla)
git revert <başlanğıc-hash>..<son-hash>
# Hər iki commit-i daxil edən aralığı ləğv et
git revert -n <başlanğıc-hash>^..<son-hash>
# Dəyişiklikləri tək addımda tətbiq et, hər bir üçün ayrıca commit yaratmadan
git revert -n <commit-hash- və ya aralık>
# Yaradılmış commit-i tətbiq et
git commit -m "Revert changes"
git rebase commit tarixçəsini yenidən yazmağa imkan verir. O, commitləri silmək, birləşdirmək və ya sıralamağı dəyişdirmək üçün istifadə edilə bilər. Xüsusilə paylaşılan şaxələrdə ehtiyatlı olunmalıdır.
# Son N commit üçün interaktiv rebase başlat
git rebase -i HEAD~N
# Açılan redaktorda, silmək istədiyiniz commitlərin yanına 'drop' yazın.
# Faylı yadda saxlayın və bağlayın.
# rebase --onto ssenarisi: feature şaxəsindən A, B, C commitlərini master-ə köçürmək,
# D commitini isə nəzərə almadan.
# Mövcud şaxə: feature
# X -- Y -- Z -- D -- A -- B -- C (feature)
# /
# W (master)
# Məqsəd: X -- Y -- Z -- W -- A -- B -- C (master)
git rebase --onto master D feature
# Burada:
# master - hədəf şaxə, ona köçürürük
# D - commit, onun üzərində köçürmədən istisna edilən
# feature - mənbə şaxə, oradan commitləri götürürük
git revert və ya git rebase tətbiq etdikdən sonra, yerli tarixçənin uzaq tarixçədən fərqli olduğu üçün (git push -f və ya git push --force-with-lease) zorunlu push etmək lazım olacaq.
# Rebase sonrası zorunlu push
git push -f origin main
# Daha təhlükəsiz zorunlu push
git push --force-with-lease origin main
Vacibdir: Ümumi şaxədə (main) tarixçəni yenidən yazmaq çox tövsiyə edilmir, çünki bu, digər inkişafçıların artıq sinxronlaşdığı əvvəlki tarixçəni pozaraq işlərini poza bilər. git revert istifadə etmək daha yaxşıdır. git rebase yalnız istisna hallarda və tam məsuliyyətlə, adətən bütün komanda ilə razılaşmadan istifadə edilməməlidir.