08/02/2024

git squash

Bazen bir branch te çalışırken ardarda commitler yapıyoruz, belki syntax hatası belki basit bir değişiklik. tabii bu durum git historyi kirletiyor, anlaşılmaz hale getiriyor.

git checkout yan_branch
git log --oneline
e732ade feature/JIRA-0015 initial8
d167ukg feature/JIRA-0015 initial7
aa3e334 feature/JIRA-0015 initial6
cf98302 feature/JIRA-0015 initial5
ep54000 feature/JIRA-0015 initial4
a65518c feature/JIRA-0015 initial3
reb8412 feature/JIRA-0015 initial2
915d1ef feature/JIRA-0015 initial1

Şimdi bunları squash etmek için

git rebase -i HEAD~8

-i interactive ve HEAD~8 son 8 commit üzerinde çalışacağız demektir.

entera basınca tersten sıralı olarak vi editörde edit ekranı gelecektir.

pick 915d1ef feature/JIRA-0015 initial1
pick reb8412 feature/JIRA-0015 initial2
pick a65518c feature/JIRA-0015 initial3
pick ep54000 feature/JIRA-0015 initial4
pick cf98302 feature/JIRA-0015 initial5
pick aa3e334 feature/JIRA-0015 initial6
pick d167ukg feature/JIRA-0015 initial7
pick e732ade feature/JIRA-0015 initial8

Burada ilk baştaki haric hepsini editleyeceğiz.

pick 915d1ef feature/JIRA-0015 initial1
squash reb8412 feature/JIRA-0015 initial2
squash a65518c feature/JIRA-0015 initial3
squash ep54000 feature/JIRA-0015 initial4
squash cf98302 feature/JIRA-0015 initial5
squash aa3e334 feature/JIRA-0015 initial6
squash d167ukg feature/JIRA-0015 initial7
squash e732ade feature/JIRA-0015 initial8

kaydedip çıkıyoruz.

sonra commit mesajları listesi geliyor orada da işimize yaramayan commit mesajlarını silip temizliyoruz ve kaydedip çıkıyoruz.

takiben forced push yapıyoruz çünkü SVC deki branchinde değişmesi gerekiyor.

git push -f

böylelikle son hali tek commit olarak branch hazır olmuş oluyor review edilebilir.