GIT SQUASH, Better way to make you commit cleaner.
halo, disini saya akan menjelaskan salah satu git command yang jarang di gunakan sebagai developer tetapi command ini sangat penting untuk memudahkan kita membaca atau memahami commit message dari sebuah repository. yaitu ‘git squash’
APA ITU GIT SQUASH DAN KAPAN PENGUNAANNYA ?
nah kita bisa lihat dari seluruh commit di gambar, inti dari seluruh commit ini adalah fixing di sebuah function yaitu pada commit paling atas
ce71863 (HEAD -> squash-tutorial) [NO-JIRA] remove all debugging and fixing some function
setelah commit sebelumnya melakukan debugging dan banyak code yang di ubah-ubah untuk melakukan pengecekan atau logging.
bayangkan anda melakukan debugging sampai puluhan kali dan cuma satu commit saja di akhir yang menjadi akar permasalahan bugs anda. itu bakalan membuat repo anda penuh dengan commit message yang tidak berguna. di kemudian hari membuat team lain bingung untuk tracing commit message yang manakah dilakukan perubahan.
GIT SQUASH
adalah cara untuk mengabungkan beberapa commit message menjadi satu dengan menentukan base commit ( commit yang menjadi inti/fixing dari keselurahan debugging )
CARA MELAKUKAN GIT SQUASH
ceritanya kita akan melakukan fixing atau debugging activity pada sebuah function atau file, dalam activity ini banyak commit yang kita lakukan seperti menambah log , mencoba test print result dari sebuah function , atau yang lain lain untuk kebutuhan debugging. dan commit message akan terlihat seperti ini :
- run git log — oneline , tentukan based commit (commit pertama activity ini ) , berapa line yang akan di squash, dan line terakhir yang bukan bagian dari activity untuk squash
2. Running command di terminal git rebase -i HEAD~7 ( angka 7 adalah jumlah line dari 1 base commit + 6 line yang akan di squash )
3. Ubah 6 commit menjadi ‘squash’, dan 1 commit (base) biarkan tetap ‘pick’ dengan command vim yaitu tekan i pada keyboad
setelah diubah tekan esc lalu shift + : lalu type wq
4. Lalu akan muncul seperti ini
ubah description commit ‘debungging no 1’ (base commit) dengan description yang sesuai dengan activity ini, dan comment selebihnya dengan menambahkan #
lalu ketik :wq
5. Squash telah berhasil
lalu coba check dengan command git log — oneline
AFTER SQUASH:
dari commit debungging yang banyak sekarang kita hanya punya satu commit dengan description yang jelas.
BEFORE :
Notes:
Jika squash di lakukan pada commit yang belum pernah di push ke remote repository , push dengan menjalakan git push origin <repo-name>
Jika squash di lakukan pada commit yang sudah pernah di push ke remote repository atau ingin merapikan commit sebelumnya , push dengan menjalakan git push — force origin <repo-name>.