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
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 lokalBagaimana 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 FiturAda 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 rebaseLangkah 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?
