Cara menjadi pakar Git

Gambar untuk postingan
“Fotografi selang waktu manusia yang berdiri di pinggir jalan dan jembatan pada siang hari” oleh  Ahsan Avi  di  Unsplash

Saya membuat kesalahan dalam komit saya, bagaimana cara memperbaikinya?

Histori komit saya berantakan, bagaimana cara membuatnya lebih rapi?

Jika Anda pernah memiliki pertanyaan di atas, maka posting ini untuk Anda. Posting ini mencakup daftar topik yang akan membuat Anda menjadi ahli Git.

Jika Anda tidak mengetahui dasar-dasar Git,  klik di sini  untuk melihat blog saya tentang dasar-dasar Git. Anda harus mengetahui dasar-dasar Git untuk memanfaatkan artikel ini sebaik-baiknya.

Saya membuat kesalahan dalam komitmen saya. Apa yang harus saya lakukan?

Gambar untuk postingan
"Piring keramik pecah di lantai" oleh  chuttersnap  di  Unsplash

Katakanlah Anda telah melakukan banyak file dan menyadari bahwa pesan komit yang Anda masukkan sebenarnya tidak jelas. Sekarang Anda ingin mengubah pesan komit. Untuk melakukan ini, Anda dapat menggunakan git commit --amend

git commit --amend -m "Pesan commit baru"

Katakanlah Anda ingin mengkomit enam file tetapi, secara tidak sengaja, Anda akhirnya hanya melakukan lima file. Anda mungkin berpikir bahwa Anda dapat membuat komit baru dan menambahkan file ke-6 ke komit itu.

Tidak ada yang salah dengan pendekatan ini. Tapi, untuk mempertahankan riwayat komit yang rapi, bukankah lebih baik jika Anda benar-benar dapat menambahkan file ini ke komit Anda sebelumnya? Ini dapat dilakukan juga melalui  git commit --amend :

git menambahkan file6 
git commit --amend --no-edit

--no-edit berarti pesan komit tidak berubah.

Setiap kali Anda melakukan komit di Git, komit tersebut memiliki nama penulis dan email penulis yang terkait dengannya. Umumnya, saat Anda mengatur Git untuk pertama kali, Anda mengatur nama penulis dan email. Anda tidak perlu khawatir tentang detail penulis untuk setiap komit.

Karena itu, mungkin saja untuk proyek tertentu Anda ingin menggunakan ID email yang berbeda. Anda perlu mengkonfigurasi id email untuk proyek itu dengan perintah:

git config user.email "id email Anda"

Katakanlah Anda lupa mengonfigurasi email dan sudah melakukan commit pertama Anda. Amend dapat digunakan untuk mengubah penulis komit Anda sebelumnya juga. Penulis komit dapat diubah menggunakan perintah berikut:

git commit --amend --author "Nama Penulis <Email Penulis>"

Menggunakan amend perintah hanya di repositori lokal Anda. Menggunakan amend untuk repositori jarak jauh dapat membuat banyak kebingungan.

Histori Commit saya berantakan. Bagaimana cara menanganinya?

Katakanlah Anda sedang mengerjakan sepotong kode. Anda tahu bahwa kode akan memakan waktu sekitar sepuluh hari untuk diselesaikan. Dalam sepuluh hari itu, pengembang lain juga akan memasukkan kode ke repositori jarak jauh.

Merupakan  praktik yang baik  untuk selalu memperbarui kode repositori lokal Anda dengan kode di repositori jarak jauh. Ini untuk menghindari banyak konflik penggabungan nanti saat Anda mengajukan permintaan tarik. Jadi Anda memutuskan bahwa Anda akan menarik perubahan dari repositori jarak jauh setiap dua hari sekali.

Setiap kali Anda menarik kode dari repositori jarak jauh ke repositori lokal, komit gabungan baru dibuat di repositori lokal Anda. Ini berarti bahwa riwayat komit lokal Anda akan memiliki banyak komit gabungan yang dapat membuat segala sesuatunya tampak membingungkan bagi pengulas.

Gambar untuk postingan
Berikut adalah tampilan riwayat komit di repositori lokal Anda.

Di sinilah  rebase  datang untuk menyelamatkan.

Izinkan saya menjelaskan ini melalui sebuah contoh.

Gambar untuk postingan
Diagram ini menunjukkan komit di cabang rilis dan cabang fitur Anda
  1. Cabang Rilis memiliki tiga komit: Rcommit1, Rcommit2, dan Rcommit3.
  2. Anda membuat cabang Fitur Anda dari cabang Rilis ketika cabang itu hanya memiliki satu komit, yaitu Rcommit1.
  3. Anda telah menambahkan dua komit ke cabang Fitur. Mereka adalah Fcommit1 dan Fcommit2.
  4. Tujuan Anda adalah mendapatkan komit dari cabang Rilis ke cabang Fitur Anda.
  5. Anda akan menggunakan rebase untuk melakukan ini.
  6. Biarkan nama cabang Rilis menjadi  rilis  dan nama cabang Fitur menjadi  fitur .
  7. Rebasing dapat dilakukan menggunakan perintah berikut:
fitur git checkout 
rilis git rebase

Saat melakukan rebasing, tujuan Anda adalah memastikan cabang Fitur mendapatkan kode terbaru dari cabang Rilis.

Rebasing mencoba menambahkan setiap komit, satu per satu, dan memeriksa konflik. Apakah itu terdengar membingungkan?

Izinkan saya menjelaskan dengan bantuan diagram.

Ini menunjukkan apa yang sebenarnya dilakukan rebasing secara internal:

Gambar untuk postingan
  1. Saat Anda menjalankan perintah, cabang Fitur diarahkan ke kepala cabang Rilis.
  2. Sekarang cabang Feature memiliki tiga komit: Rcommit1, Rcommit2, dan Rcommit3.
  3. Anda mungkin bertanya-tanya apa yang terjadi dengan Fcommit1 dan Fcommit2.
  4. Komit masih ada dan akan digunakan dalam langkah-langkah di bawah ini.
  1. Sekarang Git mencoba menambahkan Fcommit1 ke cabang Feature.
  2. Jika tidak ada konflik, Fcommit1 ditambahkan setelah Rcommit3
  3. Jika terjadi konflik, Git akan memberi tahu Anda, dan Anda harus menyelesaikan konflik tersebut secara manual. Setelah konflik diselesaikan gunakan perintah berikut untuk melanjutkan rebasing
git add fixedfile 
git rebase --continue
  1. Setelah Fcommit1 ditambahkan, Git akan mencoba menambahkan Fcommit2.
  2. Sekali lagi, jika tidak ada konflik, Fcommit2 ditambahkan setelah Fcommit1 dan rebase berhasil.
  3. Jika ada konflik, Git akan memberi tahu Anda, dan Anda harus menyelesaikannya secara manual. Gunakan perintah yang sama yang disebutkan di Langkah 2 setelah menyelesaikan konflik
  4. Setelah seluruh rebase selesai, Anda akan melihat bahwa cabang Feature memiliki Rcommit1, Rcommit2, Rcommit3, Fcommit1, dan Fcommit2.
  1. Baik Rebase dan Merge berguna di Git. Yang satu tidak lebih baik dari yang lain.
  2. Dalam kasus penggabungan, Anda akan memiliki komit gabungan. Dalam kasus rebase, tidak ada komit tambahan seperti komit gabungan.
  3. Salah satu praktik terbaik adalah menggunakan perintah di berbagai titik. Gunakan rebase ketika Anda memperbarui repositori kode lokal Anda dengan kode terbaru dari repositori jarak jauh. Gunakan merge saat Anda berurusan dengan permintaan pull untuk menggabungkan kembali cabang Feature dengan cabang Release atau Master.
  4. Menggunakan Rebase mengubah riwayat komit (membuatnya lebih rapi). Namun demikian, mengubah riwayat komit memiliki risikonya. Jadi pastikan Anda tidak pernah menggunakan rebase pada kode yang ada di repositori jarak jauh. Selalu gunakan rebase hanya untuk mengubah riwayat komit dari kode repo lokal Anda.
  5. Jika rebase dilakukan ke repositori jarak jauh, itu dapat membuat banyak kebingungan karena pengembang lain tidak akan mengenali riwayat baru.
  6. Juga jika rebase dilakukan pada repositori jarak jauh, itu dapat menimbulkan masalah ketika pengembang lain mencoba untuk menarik kode terbaru dari repositori jarak jauh. Jadi saya ulangi lagi, selalu gunakan rebase hanya untuk repositori lokal 

Selamat

Anda sekarang adalah pakar Git 

Dalam posting ini Anda telah mempelajari tentang:

  • mengubah komitmen
  • rebase

Keduanya adalah konsep yang sangat berguna. Jelajahi dunia Git untuk mempelajari lebih lanjut.


Post a Comment

Previous Post Next Post