Cara Menggabungkan Komitmen N Git Terakhir Anda

Cara Menggabungkan Komitmen N Git Terakhir Anda
Cara Menggabungkan Komitmen N Git Terakhir Anda

Menguasai Commit Squashing di Git:

Saat mengerjakan sebuah proyek, riwayat penerapan Anda bisa menjadi berantakan karena banyaknya komitmen kecil. Komitmen kecil ini dapat mempersulit peninjauan perubahan dan memahami riwayat proyek.

Di Git, Anda dapat menggabungkan N komitmen terakhir Anda menjadi satu komitmen, menciptakan riwayat yang lebih bersih dan mudah dikelola. Panduan ini akan memandu Anda melalui langkah-langkah untuk mencapai hal ini, sehingga membuat kontrol versi Anda lebih efisien.

Memerintah Keterangan
git rebase -i HEAD~N Memulai rebase interaktif dari N komitmen terakhir.
pick Mempertahankan komit apa adanya selama rebase interaktif.
squash Menggabungkan komit dengan komit sebelumnya selama rebase interaktif.
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo Secara otomatis mengganti 'pick' dengan 'squash' untuk semua kecuali komit pertama dalam daftar tugas rebase.
git rebase --continue Melanjutkan proses rebase setelah menyelesaikan konflik.
git rebase --abort Membatalkan proses rebase dan kembali ke keadaan sebelum rebase dimulai.
HEAD~N Mengacu pada komit N tempat sebelum HEAD saat ini.

Memahami Git Commit Squashing

Skrip pertama menggunakan git rebase -i HEAD~N untuk memulai rebase interaktif dari N komitmen terakhir. Di layar interaktif, Anda mengganti 'pick' dengan 'squash' untuk komitmen yang ingin Anda gabungkan. Proses ini membantu menggabungkan beberapa komitmen yang lebih kecil menjadi satu, menjadikan riwayat penerapan Anda lebih bersih dan lebih mudah dikelola. Setelah mengedit, simpan dan tutup editor. Jika ada konflik, Anda menyelesaikannya dan melanjutkan git rebase --continue.

Skrip kedua adalah skrip Bash yang mengotomatiskan proses squashing. Ini dimulai dengan memeriksa apakah sejumlah komitmen (N) disediakan. Kemudian, itu berjalan git rebase -i HEAD~N dan kegunaan sed untuk mengganti 'pick' dengan 'squash' untuk semua kecuali komit pertama dalam daftar tugas rebase. Hal ini memudahkan untuk menghentikan banyak penerapan tanpa mengedit file secara manual. Terakhir, melanjutkan proses rebase dengan git rebase --continue, menangani resolusi konflik yang diperlukan secara otomatis.

Squash Beberapa Komit menjadi Satu Menggunakan Git Rebase

Perintah Git

git rebase -i HEAD~N
# Replace N with the number of commits you want to squash
# In the interactive rebase screen that appears, change 'pick' to 'squash' (or 's') for the commits you want to squash
# Save and close the editor
# Edit the commit message if needed, then save and close the editor again
# If there are conflicts, resolve them and then run
git rebase --continue
# Your last N commits are now squashed into one commit

Mengotomatiskan Commit Squashing dengan Skrip Shell

Skrip Bash

#!/bin/bash
if [ -z "$1" ]
then
  echo "Usage: ./squash_commits.sh <N>"
  exit 1
fi
git rebase -i HEAD~$1
# Automatically replace 'pick' with 'squash' for all but the first commit
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo
git rebase --continue

Teknik Pemadatan Git Tingkat Lanjut

Aspek penting lainnya dalam menghapus komitmen di Git adalah menangani konflik penggabungan yang mungkin timbul selama proses tersebut. Saat menggabungkan beberapa penerapan, perubahan dari penerapan yang berbeda mungkin bertentangan satu sama lain. Untuk mengatasi konflik tersebut, Git memberikan perintah seperti git status untuk melihat file mana yang konflik dan git add untuk menandainya sebagai terselesaikan. Setelah menyelesaikan konflik, Anda melanjutkan rebase dengan git rebase --continue.

Penting juga untuk mengetahui cara membatalkan rebase jika terjadi kesalahan. Perintah git rebase --abort menghentikan proses rebase dan mengembalikan repositori Anda ke keadaan sebelumnya sebelum rebase dimulai. Hal ini memastikan bahwa Anda dapat dengan aman membatalkan perubahan apa pun yang dibuat selama proses rebase. Memahami perintah ini dapat meningkatkan kemampuan Anda secara signifikan dalam mengelola riwayat Git yang kompleks secara efisien.

Pertanyaan Umum Tentang Git Commit Squashing

  1. Apa arti dari squashing commit?
  2. Menekan komit berarti menggabungkan beberapa komit menjadi satu komit untuk menyederhanakan riwayat komit.
  3. Mengapa saya harus menghentikan komitmen?
  4. Membatalkan komitmen dapat membuat riwayat proyek Anda lebih bersih dan mudah dibaca, terutama ketika banyak komitmen kecil digunakan.
  5. Bagaimana cara memulai rebase interaktif?
  6. Gunakan perintah git rebase -i HEAD~N, ganti N dengan jumlah komitmen yang ingin Anda hancurkan.
  7. Apa arti 'pick' dan 'squash' dalam rebase interaktif?
  8. 'Pick' mempertahankan komit apa adanya, sementara 'squash' menggabungkannya dengan komit sebelumnya.
  9. Bagaimana cara menyelesaikan konflik selama rebase?
  10. Menggunakan git status untuk mengidentifikasi konflik, menyelesaikannya secara manual, lalu menggunakan git add Dan git rebase --continue.
  11. Bisakah saya membatalkan rebase jika terjadi kesalahan?
  12. Ya, Anda bisa menggunakannya git rebase --abort untuk menghentikan rebase dan kembali ke keadaan sebelumnya.
  13. Apa manfaat menggunakan skrip Bash untuk menghilangkan komit?
  14. Skrip Bash mengotomatiskan proses, menghemat waktu dan mengurangi risiko kesalahan manual.
  15. Apakah ada cara untuk secara otomatis menghentikan komitmen dalam rebase?
  16. Ya, dengan menggunakan skrip untuk mengubah daftar tugas rebase sed, Anda dapat secara otomatis mengubah 'pick' menjadi 'squash'.

Menyelesaikan Git Commit Squashing

Menghilangkan komitmen di Git adalah teknik yang ampuh untuk menjaga riwayat proyek tetap bersih dan mudah dibaca. Baik menggunakan rebase interaktif atau mengotomatisasi dengan skrip Bash, Anda dapat menggabungkan beberapa penerapan menjadi satu penerapan, sehingga membuat log lebih mudah dikelola. Memahami cara menyelesaikan konflik dan membatalkan rebase akan menambah kemahiran Git Anda, memastikan Anda dapat menangani masalah apa pun yang muncul. Menguasai perintah dan metode ini akan meningkatkan praktik kontrol versi Anda secara signifikan.