Gerçek hayattan kendi yaşadığım bir başka örneği de anlatayım. Pull request yolladığım bir projede, pull requesti yolladıktan sonra fark ettim ki, proje dosyalarındaki indent ile benim editörümde kullandığım indent farklıymış. Sonradan bunu da bir başka commit ile düzelttim ve yolladım. Ne olacak diye düşünebilirsiniz, ancak bu git history için felaket anlamına geliyor, yaptığım ikinci commit ile projenin tüm satırlarında imzam oluyor ve gereksiz yere indent'i düzelttim diye commit mesajım yer alıyor(bir başka harika komut olan
git blame DOSYAile herhangi bir dosyada bunu kontrol edebilirsiniz, nasıl bir şey olduğunu merak ediyorsanız bu linkten Github arayüzüne bakabilirsiniz).
Alttaki komut ile projenizin son üç komutunu, ilk örnekteki son 3 README'yi güncelledim commit'ini düşünebilirsiniz, düzenleyebilirsiniz.
$ git rebase -i origin/master~3 masterKarşınıza çıkan ekranda, üst satırda son 3 commit'inizin yer aldığını göreceksiniz.
pick bef2a97 README güncellendiÜzerinde birleştirmek istediğiniz commit'i pick ile seçmeniz gerekirken, squash ile de birleştirmek istediğiniz commit'leri belirtiyorsunuz. İlk satırdaki commit için p ile pick belirtip, alttaki diğer iki commit için s ile squash belirtebilirsiniz. Böylece 3 commit ilk satırdaki commit'te birleşmiş oluyor.
pick 280167f README yine güncellendi
pick 5c48d88 README yine tekrar güncellendi
p bef2a97 README güncellendiBu dosyayı kaydedip çıkın. Sonrasında da force bayrağı ile yaptığınız değişiklikleri pushlayabilirsiniz.
s 280167f README yine güncellendi
s 5c48d88 README yine tekrar güncellendi
$ git push --force origin masterCommit sayınızın 2 adet eksildiğini göreceksiniz.