Cara merapikan riwayat komitmen Anda di Git

Kami menerbitkan terjemahan dari artikel yang kami temukan di hackernoon.com. Penulisnya, Thiago Miranda, menulis tentang bagaimana membuat bekerja dengan Git lebih mudah dan efisien.



Tentang beberapa perintah yang sangat berguna di Git


Selama sebulan terakhir saya telah melakukan pemrograman berpasangan dan membuat beberapa ratus commit di Git. Dalam artikel ini, saya akan membagikan yang paling penting dari apa yang saya pelajari selama ini: Saya akan berbicara tentang bekerja dengan sejarah komitmen, tentang teknik yang berhasil dan bagaimana menerapkannya menggunakan selusin tim.

1. Apa cerita di Git?




Daftar akurat semua komit yang berisi perubahan yang dibuat ke file. Di dalamnya, Anda dapat melacak perubahan spesifik dan waktu mereka dibuat, atau membandingkan versi saat ini dengan yang sebelumnya. Di mana melihat ceritanya? Masukkan perintah melalui Git Bash:

git log --oneline

Jika Anda memiliki terlalu banyak komit, Anda dapat beralih dari satu komentar ke yang lain menggunakan tombol panah atau tombol Page Up / Page Down - seperti di file lain. Untuk keluar, tekan tombol pintas (q).

2. Tentang komentar tentang komitmen


Jangan menulis komentar yang tidak berarti, mereka harus singkat dan tidak membutuhkan penjelasan. Tugas mereka adalah untuk menunjukkan perubahan apa yang Anda buat pada kode dan apa pengaruhnya.

  • Bagaimana tidak: "Fixed index.html"
  • Cara: "Meningkatkan kecepatan bilah navigasi"

Mari kita lihat untuk apa ini.
Bayangkan Anda sedang mengerjakan proyek berskala besar sehingga sebagian besar spesialis yang bekerja di dalamnya bahkan tidak tahu. Anda mengembangkan fitur baru, mengujinya pada peralatan Anda, dan semuanya berfungsi dengan baik.

Tetapi setelah ditekan semuanya tiba-tiba berhenti berfungsi, dan hal pertama yang Anda periksa adalah perubahan yang dibuat selama pengembangan fitur ini. Di log Git, Anda menemukan banyak komit dengan komentar dalam gaya "tetap". Bayangkan berapa banyak waktu yang harus Anda habiskan untuk menemukan yang tepat!

3. Selalu membuat komitmen


Berkomitmen, berkomitmen, dan lagi berkomitmen. Selesai fungsinya - tambahkan komit, perbaiki gaya elemen blok - tambahkan komit dan sebagainya. Idealnya, Anda harus mengirim komit dengan setiap perubahan.

Mungkin Anda berpikir: mengapa ada begitu banyak komitmen? Alasan utama adalah bahwa fungsionalitas baru Anda mungkin bertentangan dengan kode orang lain, tetapi jika Anda selalu melakukan perubahan kecil, menemukan dan memperbaikinya akan lebih mudah. Ini menghemat waktu Anda dengan melacak lusinan atau ratusan baris yang dimodifikasi dalam komit yang sama.

4. Perbaiki komentar terakhir pada komit


Bagaimana jika, setelah menambahkan komit kecil ke repositori lokal Anda, Anda ingin memperbaiki kesalahan ketik atau berkomentar pada komit secara lebih rinci? Membuat perubahan cukup sederhana dengan perintah:

git commit -m “correct message” --amend

Harap dicatat: jika Anda sudah mulai melakukan ke repositori jarak jauh, perintah ini lebih baik untuk tidak digunakan.

Lihat dokumentasi resmi untuk perinciannya .

5. Gabungkan komit X terakhir menjadi satu


Situasi: mengirim komit ke fitur baru, Anda memahami bahwa Anda memerlukan satu perubahan kecil lagi, melakukan perubahan minimal, dan mengkomit lagi ... Sebagai hasilnya, 5 komit adalah tentang hal yang sama. Itu terjadi? Komit semacam itu dihilangkan dari pandangan umum cerita Anda di Git, tetapi jika Anda mau, mereka dapat dengan mudah diperbaiki menggunakan perintah:

git reset HEAD~3

Perintah HEAD ~ 3 mengembalikan 3 komit teratas, termasuk yang terbaru. Dalam contoh ini, tiga komit terakhir Anda akan dihapus dari log, tetapi perubahan dalam kode akan tetap di tempatnya. Sekarang saatnya untuk melihat kode apa yang perlu Anda komit, untuk ini kita masukkan perintah:

git stage --diff

Anda akan melihat bahwa semua perubahan pada komit yang Anda hapus dari riwayat sekarang diindeks, sehingga Anda dapat mengkomitnya lagi, kali ini dalam sekali jalan.

Perhatikan bahwa HEAD biasanya merujuk pada komit terakhir yang Anda tambahkan. Jika Anda tidak yakin, periksa log Git. Jika komit terakhir Anda dibekukan (bukan kasus yang paling umum), perintah HEAD ~ 1 akan menghapus semua komit dari cabang beku. Untuk mempelajari lebih lanjut, lihat dokumentasi.

6. Hapus komit terakhir dengan perubahan


Hati-hati, karena metode ini akan menghapus semua perubahan tanpa kemampuan untuk memutar kembali. Biasanya digunakan setelah bereksperimen dengan kode jika hasilnya tidak memenuhi harapan. Saya merekomendasikan Anda untuk mencoba repositori kotak pasir terlebih dahulu.

git reset –-hard HEAD~1

Sekarang komit terakhir Anda telah dihapus, serta semua perubahan yang relevan dalam kode.

7. Bersihkan riwayat komit Anda


Cara paling efisien untuk menghapus histori komit adalah dengan menggunakan perintah rebase. Hati-hati: Anda dapat menghapus komit dengan secara tidak sengaja menekan tombol yang salah. Jadi, mari kita jalankan rebase secara interaktif (-i flag) dengan perintah:

git rebase -i HEAD~5



Segera setelah Anda memasukkannya, Anda akan melihat daftar 5 commit terakhir (HEAD ~ 5) di dalam terminal. Semua komit diurutkan berdasarkan tanggal, mis. Yang teratas akan menjadi yang terbaru (daftar ini dibuka menggunakan Vim, editor teks Git default yang memungkinkan pengeditan file teks di dalam terminal). Dan ini adalah instruksi singkat dengan beberapa perintah yang berguna. Dalam kebanyakan kasus, Anda akan memerlukan perintah squash dan reword.

Mengganti perintah pilih dengan perintah squash akan menghapus komit ini dari log, dan semua perubahan dalam kode akan dikelompokkan dengan komit terakhir yang disorot oleh perintah pilih.

Jika Anda ingin menyesuaikan komentar, Anda dapat mengganti perintah pick dengan perintah reword dan menulis ulang komentar.

Sekarang Anda dapat pergi ke jendela berikutnya, di mana Anda perlu menulis satu komentar untuk grup commit yang akan Anda lem menggunakan squash. Untuk melanjutkan, tekan ESC dan masukkan:

:wq!

Tanda titik dua (:)diperlukan untuk menunjukkan bahwa Anda ingin mentransfer perintah, (w)untuk menulis (menyimpan) perubahan, (q)untuk keluar, dan (!)untuk menjalankan perintah.

Harap perhatikan bahwa setiap grup komit akan menerima komentar Anda. Hasilnya dapat diperiksa di log Git.

Jika karena alasan tertentu Anda meninggalkan jendela ini tanpa menyelesaikan operasi, Anda dapat kembali kapan saja dengan perintah:

git rebase --edit

Jika Anda ingin meninggalkan jendela tanpa menyimpan perubahan, tekan tombol ESC dan masukkan:

:q!

Vim akan menerima perintah untuk menutup file tanpa menyimpan.

8. Kelola pengindeksan


Biasanya, Anda harus mengirim komit ke satu file atau ke sekelompok file terkait. Tapi bagaimana cara cepat membuat perubahan selama pengindeksan?

Katakanlah Anda memiliki 3 file, dan hanya 2 yang perlu dikomit. Dalam hal ini, Anda dapat mencoba perintah berikut:

git add .

Sekarang hapus file yang tidak Anda perlukan dari pengindeksan:

git reset -- Readme.txt

Dan periksa hasilnya:

git status

Tambahkan semua file dari beberapa ekstensi, misalnya CSS:

git add *.css

Menambahkan semuanya karena kesalahan? Kemudian kosongkan indeks menggunakan perintah:

git reset --

Jika Anda membutuhkan operasi yang lebih kompleks, Anda dapat menambahkan file ke indeks menggunakan mode dialog:

git add -i

Pertama, pilih opsi dengan memasukkan nomor yang sesuai, misalnya (3), untuk memutar kembali tindakan Anda.

Dengan memilih opsi, Anda dapat memasukkan daftar file yang ingin Anda hapus dari pengindeksan, satu demi satu.

Setelah selesai, tekan (Enter).

File ditambahkan dengan cara yang sama. Menggunakan opsi (4) tambahkan file yang tidak dilacak.

Untuk keluar, masuk ke (q)menu opsi.

9. Kesimpulan


Hal utama yang harus dilakukan sebelum mendorong ke repositori jarak jauh, dan terutama sebelum menggabungkan cabang Anda, adalah untuk memastikan bahwa Anda merapikan riwayat komit. Setelah Anda mendorong semuanya ke repositori jarak jauh, tidak ada yang bisa diperbaiki.

Ingin mempelajari lebih lanjut tentang pemrograman pasangan dan memulai dari jarak jauh? Lihat Microverse.org .

All Articles