Git: memperbaiki bug dan memperbaiki commit

Kesalahan dalam komit ... Bagaimana cara memperbaikinya? Kekacauan dalam sejarah komitmen ... Bagaimana membuat semuanya terlihat layak? Penulis artikel, terjemahan yang kami terbitkan hari ini, mengatakan bahwa itu ditulis khusus untuk mereka yang mengajukan pertanyaan seperti itu. Menurutnya, setelah mempelajari teknik-teknik untuk bekerja dengan Git yang disajikan di sini, Anda dapat secara signifikan maju di sepanjang jalur penguasaan Git.


Diasumsikan bahwa pembaca artikel ini sudah akrab dengan dasar-dasar Git. Jika tidak demikian, pertama-tama disarankan untuk menguasai basis, misalnya, menggunakan bahan ini .

Perbaiki bug dalam komit


Di sini kita akan melihat beberapa skenario untuk kesalahan dalam komit dan koreksi mereka.

▍ Skenario nomor 1


Misalkan Anda melakukan banyak file dan menyadari bahwa pesan komit tidak terlalu jelas. Setelah itu, Anda memutuskan untuk mengubah pesan ini. Untuk melakukan ini, gunakan perintah git commit --amend . Berikut ini contoh aplikasinya:

 git commit --amend -m "New commit message" 

▍ Nomor skenario 2


Misalkan Anda ingin melakukan enam file, tetapi secara keliru hanya melakukan lima. Tampaknya Anda dapat memperbaiki kesalahan ini hanya dengan membuat komit baru dan menambahkan file keenam yang hilang di sana.

Pendekatan ini memiliki hak untuk hidup. Tetapi untuk menjaga agar komit tetap dalam kondisi baik, mungkin akan jauh lebih baik untuk dapat menambahkan file yang dilewati secara acak ke komit yang sama. Ini dapat dilakukan, sekali lagi, dengan perintah git commit --amend . Penggunaannya terlihat seperti ini:

 git add file6 git commit --amend --no-edit 

Bendera --no-edit berarti pesan komit tidak berubah.

▍ Skenario nomor 3


Komit yang dibuat di Git terikat dengan nama penulis dan alamat emailnya. Biasanya, data ini ditunjukkan dengan melakukan konfigurasi awal Git. Akibatnya, mereka yang menggunakan Git mungkin tidak, ketika mengeksekusi setiap komit, peduli dengan informasi tentang pembuatnya.

Selain itu, sangat mungkin bahwa ketika bekerja dengan beberapa proyek, Anda perlu menggunakan informasi tentang penulis, misalnya, alamat email yang berbeda dari yang utama. Untuk proyek semacam itu, Anda perlu menentukan alamat email menggunakan perintah ini:

 git config user.email "your email id" 

Misalkan Anda lupa melakukan pengaturan ini dan sudah membuat komit pertama. Memperbaiki situasi yang sudah tidak asing lagi bagi kami. Dengan menggunakannya, Anda dapat mengubah informasi tentang pembuat komit sebelumnya:

 git commit --amend --author "Author Name <Author Email>" 

▍ Catatan


Gunakan perintah amend hanya di repositori lokal Anda. Penggunaannya dalam repositori jarak jauh dapat menyebabkan kebingungan yang sangat besar.

Menertibkan dalam sejarah komitmen


Misalkan Anda sedang mengerjakan sepotong kode untuk suatu proyek. Anda tahu bahwa itu akan memakan waktu sekitar sepuluh hari. Selama sepuluh hari ini, pengembang lain berkomitmen pada repositori sumber.

Disarankan untuk menjaga sinkronisasi antara repositori lokal dan jarak jauh. Ini menghindari banyak konflik gabungan yang muncul ketika repositori terlalu jarang untuk disinkronkan. Mengikuti praktik ini, Anda memutuskan untuk mengunduh perubahan dari repositori jarak jauh setiap dua hari.

Setiap kali Anda mengunduh kode dari remote ke repositori lokal, komit gabungan baru dibuat di repositori lokal. Ini berarti bahwa dalam riwayat komit lokal Anda, akan ada banyak komit yang dapat membingungkan orang yang akan melihat kode Anda.


Sejarah komit di repositori lokal

Bagaimana cara merapikan riwayat commit? Untuk mengatasi masalah ini, Anda dapat menggunakan perintah git rebase .

▍ Dapatkan perintah rebase


Pertimbangkan perintah git rebase sebagai contoh.


Berkomitmen di cabang Rilis dan di cabang Fitur

Ada tiga komit di cabang Release : Rcommit1 , Rcommit2 , dan Rcommit3 . Anda membuat cabang Feature Anda dari cabang Release ketika hanya memiliki satu komit - Rcommit1 . Setelah itu, Anda menambahkan dua komit ke cabang Feature . Ini adalah Fcommit1 dan Fcommit2 . Tujuan Anda adalah mengunggah komit dari cabang Release ke cabang Feature Anda. Untuk melakukan ini, Anda akan menggunakan perintah rebase .

Kami akan menggunakan release nama dan feature untuk dua cabang yang sedang dipertimbangkan.

Akibatnya, menggunakan rebase akan terlihat seperti ini:

 git checkout feature git rebase release 

▍ Fitur dari perintah rebase


Perintah rebase digunakan untuk memastikan bahwa cabang Feature memiliki kode baru dari cabang Release .

Saat menerapkan perintah ini, sistem mencoba untuk menambahkan setiap komit ke cabang Feature , satu per satu, dan memeriksa konflik. Jika ini terdengar rumit, mari kita lihat gambar berikut. Ini menunjukkan mekanisme internal rebase .


Cabang fitur dan tiga langkah dari perintah rebase

Langkah 1


Ketika perintah dipanggil, cabang Feature menunjuk ke kepala cabang Release . Setelah itu, ada tiga komit di cabang Feature : Rcommit1 , Rcommit2 , dan Rcommit3 . Mungkin di sini Anda akan memiliki pertanyaan tentang apa yang terjadi dengan Fcommit1 dan Fcommit2 . Komitmen ini belum hilang, mereka akan digunakan pada langkah selanjutnya.

Langkah 2


Git sekarang mencoba untuk menambahkan komit Fcommit1 ke cabang Feature . Jika tidak ada konflik, Fcommit1 ditambahkan setelah Rcommit3 . Jika konflik terdeteksi, Git akan melaporkannya dan Anda harus menyelesaikan konflik ini secara manual.

Langkah 3


Setelah komit Fcommit1 ditambahkan ke cabang Feature , Git juga mencoba menambahkan Fcommit2 . Di sini, sekali lagi, jika tidak ada konflik, maka Fcommit2 ditambahkan setelah Fcommit1 dan operasi selesai dengan sukses. Jika konflik terdeteksi, maka Git, seperti sebelumnya, akan melaporkan ini dan menawarkan untuk menanganinya.

Setelah perintah rebase Anda dapat melihat bahwa ada komit Rcommit1 , Rcommit2 , Rcommit3 , Fcommit1 , dan Fcommit2 di cabang Feature .

▍ Catatan


Saat bekerja dengan Git, perintah merge dan perintah rebase . Ini bukan untuk mengatakan bahwa salah satu dari mereka lebih disukai daripada yang lain.

Jika Anda menggunakan perintah merge , Anda akan menerima komit merge . Jika Anda menggunakan rebase , Anda tidak akan memiliki rebase tambahan.

Disarankan agar Anda menggunakan perintah ini dalam berbagai situasi. Jadi, rebase cocok untuk memperbarui kode repositori lokal berdasarkan kode terbaru dari repositori jarak jauh. Gunakan perintah merge untuk melakukan permintaan tarik untuk menggabungkan cabang Feature dengan cabang Release atau Master .

Ringkasan


Setelah mempelajari konsep-konsep yang disajikan dalam artikel ini, Anda telah meningkatkan keterampilan Git Anda dan lebih dekat ke tingkat ahli Git. Kami berharap apa yang Anda pelajari di sini bermanfaat bagi Anda. Tapi dunia Git sangat besar, karena itu, setelah menguasai sesuatu yang baru, jangan berhenti di situ dan terus maju.

Pembaca yang budiman! Pernahkah Anda mengalami kekacauan dalam komit git?

Source: https://habr.com/ru/post/id425665/


All Articles