50 Pertanyaan dan Jawaban Wawancara GIT Teratas (2026)

Mempersiapkan wawancara GIT? Saatnya mempelajari pertanyaan-pertanyaan penting yang menguji keahlian Anda dalam kontrol versi. Memahami Pertanyaan wawancara GIT membantu mengungkap kedalaman pemecahan masalah, kebiasaan kolaborasi, dan efisiensi manajemen alur kerja.

Karier di bidang kontrol versi dan kolaborasi menawarkan peluang besar bagi para profesional dengan pengalaman teknis dan keahlian domain yang kuat. Dari insinyur baru hingga senior, menguasai konsep umum dan lanjutan membantu memecahkan sesi tanya jawab yang menantang. Bekerja di bidang ini meningkatkan keterampilan analitis, kerja sama tim, dan keahlian teknis praktis yang dihargai oleh para manajer dan pemimpin tim.

Berdasarkan wawasan dari lebih dari 75 profesional, termasuk pemimpin teknis, manajer, dan pengembang, panduan ini mengkonsolidasikan perspektif wawancara GIT teratas di seluruh industri, memastikan kredibilitas, akurasi praktis, dan cakupan komprehensif untuk semua tingkat pengalaman.

Pertanyaan dan Jawaban Wawancara GIT

50 Pertanyaan dan Jawaban Wawancara GIT Teratas

1) Apa itu Git dan apa bedanya dengan sistem kontrol versi lainnya?

Git adalah sistem kontrol versi terdistribusi yang dirancang untuk tracGit memungkinkan setiap pengembang memiliki salinan lengkap repositori, termasuk seluruh riwayatnya. Model terdesentralisasi ini meningkatkan kecepatan, fleksibilitas, dan keandalan.

Contoh: Saat Anda mengkloning repositori Git, Anda dapat bekerja secara offline dan melakukan komitmen secara lokal, tidak seperti di SVN yang mengharuskan koneksi internet untuk setiap komitmen.

Faktor pergi SVN
Architekstur didistribusikan Sentralisasi
Kecepatan Lebih cepat Lebih lambat
Pekerjaan Luar Talian Didukung Tidak didukung
Bercabang Ringan Berat dan lambat

๐Ÿ‘‰ Unduh PDF Gratis: Pertanyaan & Jawaban Wawancara GIT


2) Jelaskan alur kerja Git dan siklus hidup suatu file.

Siklus hidup berkas Git menggambarkan bagaimana suatu berkas berpindah melalui berbagai status dalam suatu repositori.

File di Git dapat berada dalam salah satu dari empat status utama: Untracked, Diubah, Bertahap, dan Berkomitmen.

  1. Untracked: File yang baru dibuat belum ditambahkan ke Git.
  2. Diubah: Berkas yang telah diedit sejak komit terakhir.
  3. Dipentaskan: File ditambahkan menggunakan git add dan siap untuk berkomitmen.
  4. Berkomitmen: File disimpan secara permanen ke repositori dengan git commit.

Contoh: Pengembang membuat file baru โ†’ menjalankan git add โ†’ lalu melakukan commit. Urutan ini menyelesaikan siklus hidup file dari awal hingga akhir.tracberkomitmen.


3) Bagaimana cara kerja percabangan dan penggabungan di Git?

Percabangan memungkinkan beberapa pengembang untuk mengerjakan fitur-fitur terpisah secara bersamaan tanpa memengaruhi basis kode utama. Setiap cabang mewakili alur pengembangan yang independen.

Penggabungan menggabungkan perubahan dari satu cabang ke cabang lain, biasanya mengintegrasikan cabang fitur kembali ke cabang utama.

Contoh: Jika Anda membuat file feature/login cabang, mengerjakannya secara mandiri, dan kemudian menggabungkannya dengan main, Anda menggabungkan fitur baru Anda dengan aman.

perintah Tujuan
git branch feature Membuat cabang baru
git checkout feature Beralih ke cabang
git merge feature Bergabung dengan cabang utama

4) Apa saja jenis objek Git?

Git menyimpan data sebagai objek dalam basis data internalnya. Empat jenis objek utama adalah:

  1. Gumpal: Menyimpan data berkas.
  2. Pohon: Mewakili direktori dan struktur berkas.
  3. Melakukan: Mencatat perubahan dengan metadata seperti penulis, tanggal, dan komitmen induk.
  4. Tag: Menandai titik tertentu dalam sejarah, sering digunakan untuk rilis.

Objek-objek ini menciptakan integritas dan kekekalan Git, memastikan setiap komitmen dapat diidentifikasi secara unik melalui hash SHA-1.


5) Apa perbedaan antara Git fetch dan Git pull?

git fetch Mengunduh perubahan dari repositori jarak jauh tetapi tidak menggabungkannya secara otomatis. Ini memperbarui repositori jarak jauh lokal Anda.traccabang raja.

git pull melakukan pengambilan dan penggabungan dalam satu langkah.

perintah Deskripsi Use Case
git fetch Mengunduh perubahan tanpa penggabungan Saat Anda ingin memeriksa pembaruan sebelum menggabungkan
git pull Mengunduh dan menggabungkan perubahan secara otomatis Ketika Anda menginginkan sinkronisasi langsung

Contoh: penggunaan git fetch saat berkolaborasi untuk meninjau perubahan orang lain sebelum menggabungkan.


6) Bagaimana Git memastikan integritas data?

Git memastikan integritas data melalui Pencirian SHA-1Setiap komit, pohon, dan blob diidentifikasi oleh hash unik sepanjang 40 karakter. Hal ini menjamin bahwa perubahan satu bit pun akan mengubah hash, mencegah kerusakan atau manipulasi.

Selain itu, Git menggunakan grafik asiklik terarah (DAG) struktur di mana commit merujuk pada commit induknya, memastikan konsistensi dan tracsejarah yang dapat diandalkan.

Contoh: Jika konten suatu berkas berubah, nilai SHA-1-nya pun berubah, sehingga Git segera mengenalinya sebagai versi baru.


7) Jelaskan Git Rebase dan perbedaannya dengan Git Merge.

Kedua git merge ke git rebase mengintegrasikan perubahan dari satu cabang ke cabang lain, tetapi pendekatannya berbeda.

  • Menggabungkan: Membuat komit gabungan baru yang menggabungkan riwayat.
  • Basis ulang: Memindahkan atau memutar ulang komitmen dari satu cabang ke cabang lain, sehingga menciptakan riwayat linier.
Faktor Bergabung rebase
Riwayat Komit Non-linier Linear
Komit Baru Dibuat Ya Tidak
Use Case Melestarikan sejarah Riwayat yang lebih bersih

Contoh: penggunaan git rebase untuk menjaga riwayat proyek yang bersih, sementara git merge lebih baik untuk cabang publik bersama.


8) Apa itu Git hook dan apa manfaatnya?

Git hook adalah skrip khusus yang dipicu oleh peristiwa Git tertentu seperti commit, merge, atau push. Skrip ini membantu menegakkan standar pengkodean dan mengotomatiskan alur kerja.

Jenis-jenis kail:

  • Kait sisi klien: Jalankan pada operasi lokal (misalnya, pra-komit).
  • Hook sisi server: Jalankan tindakan repositori jarak jauh (misalnya, pra-terima).

Manfaat:

  • Cegah komitmen dengan kesalahan format.
  • Otomatisasi pemeriksaan atau pengujian kode.
  • Pastikan alur kerja yang konsisten di seluruh tim.

Contoh: A pre-commit hook dapat menolak komit jika pengujian unit gagal.


9) Apa keuntungan dan kerugian menggunakan Git?

Aspek Kelebihan Kekurangan
Performance Cepat dan efisien untuk percabangan/penggabungan Mungkin rumit untuk pemula
Kolaborasi Memungkinkan pengembangan terdistribusi Potensi konflik penggabungan
keluwesan Bekerja offline Membutuhkan pengaturan dan pembelajaran
Storage Menangani proyek besar Penyimpanan dapat tumbuh dengan cepat

Secara keseluruhan, model terdistribusi, integritas data, dan fleksibilitas Git menjadikannya standar industri, meskipun ada kurva pembelajaran bagi pengembang baru.


10) Bagaimana Anda menyelesaikan konflik penggabungan di Git?

Konflik penggabungan terjadi ketika Git tidak dapat secara otomatis merekonsiliasi perubahan antar cabang.

Langkah-langkah penyelesaian:

  1. Identifikasi file yang berkonflik dengan git status.
  2. Buka file, temukan penanda konflik (<<<<<<<, =======, >>>>>>>).
  3. Edit berkas secara manual untuk memilih atau menggabungkan perubahan.
  4. Tahapkan file menggunakan git add.
  5. Komit penggabungan yang diselesaikan dengan git commit.

Contoh: Saat dua pengembang mengedit baris yang sama dalam sebuah berkas di cabang yang berbeda, Git menimbulkan konflik selama penggabungan, sehingga memerlukan penyelesaian manual.


11) Apa perbedaan antara git reset, git revert, dan git checkout?

Ketiga perintah ini memodifikasi riwayat Git secara berbeda dan memiliki tujuan yang berbeda pula.

perintah fungsi Dampak Data Use Case
git reset Memindahkan penunjuk HEAD kembali ke komit tertentu Riwayat komit perubahan Batalkan komitmen secara lokal
git revert Membuat komitmen baru yang membatalkan perubahan sebelumnya Mempertahankan riwayat komit Membatalkan komitmen di cabang bersama dengan aman
git checkout Mengganti cabang atau memulihkan file Tidak memengaruhi riwayat komit Berpindah antar cabang atau membuang perubahan lokal

Contoh: Jika Anda secara tidak sengaja memasukkan data sensitif, gunakan git revert untuk membatalkannya dengan aman tanpa mengubah riwayat komit.

penggunaan git reset --hard hanya untuk koreksi lokal sebelum mendorong.


12) Jelaskan jenis-jenis reset dalam Git.

Git menyediakan tiga jenis utama pengaturan ulang berdasarkan seberapa jauh Anda ingin membatalkan perubahan.

Tipe perintah Tingkah laku
Lunak git reset --soft <commit> Memindahkan HEAD tetapi tetap menjaga indeks dan direktori kerja tetap utuh
Campur git reset --mixed <commit> Memindahkan HEAD dan mengatur ulang indeks; perubahan tetap berada di direktori kerja
Sulit git reset --hard <commit> Mengatur ulang HEAD, indeks, dan direktori kerja sepenuhnya

Contoh: Jika Anda melakukan perubahan sebelum waktunya, git reset --soft HEAD~1 memungkinkan Anda untuk melakukan komitmen ulang setelah modifikasi.


13) Apa itu Git Stash dan kapan Anda harus menggunakannya?

git stash menyimpan sementara perubahan yang belum dikomit, sehingga memungkinkan Anda berpindah cabang tanpa kehilangan pekerjaan.

Hal ini khususnya berguna saat melakukan banyak tugas sekaligus atau saat Anda perlu meninjau cabang lain secara mendesak.

Perintah Umum:

  • git stash: Menyimpan modifikasi lokal Anda.
  • git stash pop: Mengembalikan perubahan yang disimpan.
  • git stash list: Menampilkan semua simpanan yang disimpan.

Contoh: Jika Anda sudah setengah jalan dalam mengimplementasikan suatu fitur dan timbul masalah produksi, simpan perubahan Anda, perbaiki masalah tersebut, lalu terapkan kembali pekerjaan yang disimpan.


14) Bagaimana Git menangani repositori jarak jauh?

Repositori jarak jauh di Git adalah versi proyek Anda yang dihosting di internet atau jaringan, yang digunakan untuk kolaborasi antar pengembang.

Perintah jarak jauh yang umum:

perintah Deskripsi
git remote add origin <url> Menghubungkan repo lokal ke repo jarak jauh
git push Mengirim komitmen ke repo jarak jauh
git pull Mengambil dan menggabungkan perubahan
git fetch Mengambil tetapi tidak menggabungkan perubahan

Contoh: Pengembang biasanya mengkloning repositori jarak jauh dari platform seperti GitHub atau GitLab untuk berkontribusi pada proyek bersama.


15) Apa itu tag Git dan mengapa itu penting?

Tag adalah penunjuk ke komitmen tertentu, sering digunakan untuk menandai titik rilis (misalnya, v1.0, v2.1).

Mereka memberikan stabilitas dengan mereferensikan versi basis kode yang tidak dapat diubah.

Jenis-jenis tag:

  1. Tag ringan: Referensi komit sederhana.
  2. Tag beranotasi: Simpan metadata (penulis, pesan, tanggal).
perintah Tujuan
git tag v1.0 Membuat tag ringan
git tag -a v2.0 -m "Release 2.0" Membuat tag beranotasi
git push origin --tags Mendorong semua tag ke jarak jauh

Contoh: Tim rilis menggunakan tag beranotasi untuk mengemas dan menyebarkan versi produk yang stabil.


16) Apa itu Git Cherry-Pick dan apa kegunaannya?

git cherry-pick memungkinkan integrasi selektif komitmen tertentu dari satu cabang ke cabang lainnya.

Ini berguna ketika Anda ingin menerapkan perbaikan bug atau fitur tertentu tanpa menggabungkan seluruh cabang.

Contoh: Anda dapat menerapkan perbaikan dari feature/bugfix untuk main menggunakan:

git cherry-pick <commit-hash>

Manfaat:

  • Kontrol yang tepat atas integrasi komit.
  • Menghindari penggabungan kode yang tidak diperlukan.
  • Menjaga riwayat yang lebih bersih di cabang-cabang penting.

17) Apa itu Git Squash dan apa manfaatnya?

Squashing di Git menggabungkan beberapa komit menjadi satu, menciptakan riwayat komit yang disederhanakan dan lebih bersih.

command:

git rebase -i HEAD~3

Kemudian pilih squash opsi untuk komitmen yang ingin Anda gabungkan.

Manfaat:

  • Membuat sejarah yang ringkas.
  • Membuat permintaan penarikan lebih mudah untuk ditinjau.
  • Mengurangi kekacauan dari komitmen kecil.

Contoh: Sebelum menggabungkan cabang fitur, pengembang sering kali menyatukan semua komitmen kecil menjadi satu komitmen tunggal yang bermakna.


18) Bagaimana Anda dapat mengembalikan komit yang didorong di Git?

Setelah komit didorong ke repositori jarak jauh, komit itu tidak dapat dihapus dengan aman, tetapi dapat dikembalikan menggunakan:

git revert <commit-hash>
git push origin main

Perbedaan antara Reset dan Revert:

Faktor Reset Revert
Sejarah Menulis ulang sejarah Melestarikan sejarah
Safety/keselamatan Tidak aman untuk repo bersama Aman untuk cabang umum
penggunaan Pembatalan lokal Batalkan jarak jauh

Contoh: Jika komit yang salah sudah ada di GitHub, gunakan git revert alih-alih git reset untuk mempertahankan sejarah bersama yang konsisten.


19) Apa perbedaan antara Git dan GitHub?

Git adalah alat kontrol versi, sedangkan GitHub adalah platform berbasis cloud untuk menghosting repositori Git.

Aspek pergi GitHub
Alam Alat baris perintah Layanan berbasis web
fungsi Tracperubahan kode ks secara lokal Memungkinkan kolaborasi jarak jauh
Kebutuhan Internet Opsional Wajib
Kepemilikan Sumber terbuka (oleh Linus) Torvalds) Dimiliki oleh Microsoft

Contoh: Pengembang menggunakan Git untuk mengelola versi kode sumber secara lokal dan GitHub untuk berbagi dan meninjau kode dengan rekan satu tim.


20) Apa saja strategi penggabungan Git yang berbeda?

Git menyediakan berbagai strategi penggabungan tergantung pada bagaimana Anda ingin perubahan digabungkan.

Penyelarasan Deskripsi Use Case
Rekursif Default; menggabungkan dua cabang Penggabungan standar
Menanggung Menyimpan perubahan cabang saat ini Membuang perubahan yang masuk
Milik mereka Menyimpan perubahan cabang yang masuk Mengganti perubahan lokal
gurita Menggabungkan beberapa cabang secara bersamaan Cabang integrasi

Contoh: Selama integrasi yang kompleks, pengembang dapat menggunakan recursive strategi untuk penggabungan standar atau ours untuk memprioritaskan perubahan lokal.


21) Apa itu Detached HEAD di Git dan bagaimana cara memperbaikinya?

A KEPALA terpisah terjadi ketika HEAD Penunjuk tidak menunjuk ke cabang, melainkan ke komit tertentu. Hal ini terjadi ketika Anda memeriksa komit sebelumnya secara langsung menggunakan:

git checkout <commit-hash>

Dalam status ini, setiap komitmen baru tidak dikaitkan dengan cabang dan dapat hilang jika tidak dirujuk dengan benar.

Bagaimana cara memperbaiki:

  1. Buat cabang baru dari status terpisah:
    git checkout -b temp-branch
  2. Lalu komit atau gabungkan seperti biasa.

Contoh: Saat menguji versi kode yang lebih lama, Anda mungkin memasukkan HEAD yang terpisah. Selalu buat cabang untuk menyimpan perubahan.


22) Apa tujuan git reflog dan kapan Anda harus menggunakannya?

git reflog adalah perintah yang ampuh yang tracks semua gerakan HEAD Penunjuk, bahkan yang bukan bagian dari riwayat cabang yang terlihat. Ini berfungsi sebagai jaring pengaman untuk memulihkan komitmen yang hilang.

Pemakaian:

git reflog
git checkout <commit-hash>

Contoh:

Jika Anda tidak sengaja berlari git reset --hard dan kehilangan komitmen terbaru, git reflog memungkinkan Anda menemukan dan memulihkannya.

Manfaat:

  • Memulihkan pekerjaan yang hilang setelah rebase atau reset yang buruk.
  • Menyediakan riwayat navigasi komit yang terperinci.
  • Meningkatkan keselamatan dalam alur kerja yang kompleks.

23) Jelaskan Submodul Git dan kasus penggunaannya.

A Submodul Git Memungkinkan Anda memasukkan satu repositori Git sebagai subfolder di dalam repositori Git lainnya. Ini digunakan saat mengelola proyek yang bergantung pada repositori lain.

Perintah Umum:

git submodule add <repo-url>
git submodule update --init

Contoh: Aplikasi web dapat menyertakan modul autentikasi bersama sebagai submodul Git di beberapa proyek.

Kelebihan Kekurangan
Promopenggunaan kembali kode tes Dapat mempersulit alur kerja CI/CD
Mempertahankan sejarah independen Memerlukan pembaruan manual
Memastikan konsistensi versi Kurva pembelajaran yang lebih tinggi

24) Apa itu Alur Kerja Git dan apa saja jenisnya?

Alur kerja Git menentukan pendekatan terstruktur yang digunakan tim untuk berkolaborasi dengan Git. Jenis yang paling populer adalah:

Workflow Deskripsi Use Case
Aliran Git Menggunakan cabang fitur, pengembangan, dan rilis Proyek skala besar
Aliran GitHub Alur yang disederhanakan menggunakan cabang utama dan fitur Penyebaran berkelanjutan
Alur GitLab Menggabungkan Git Flow dengan integrasi CI/CD Proyek berorientasi DevOps
Berbasis Batang Pengembang berkomitmen pada satu cabang bersama Tim yang tangkas dan cepat dalam pengiriman

Contoh: Perusahaan rintisan sering kali mengadopsi Berbasis Batang alur kerja untuk kecepatan, sementara perusahaan lebih memilih Aliran Git untuk pelepasan yang terkendali.


25) Apa itu Git Bisect dan bagaimana ia membantu dalam debugging?

git bisect adalah alat debugging yang kuat yang menggunakan pencarian biner untuk mengidentifikasi komitmen yang memperkenalkan bug.

Contoh Alur Kerja:

  1. Mulai bagi dua: git bisect start
  2. Tandai komit saat ini sebagai buruk: git bisect bad
  3. Tandai komitmen baik terakhir yang diketahui: git bisect good <commit>
  4. Git memeriksa titik tengah secara otomatis.
  5. Uji dan lanjutkan hingga komit yang salah ditemukan.

Manfaat:

  • Mempercepat bug tracdalam basis kode yang besar.
  • Mengurangi pemeriksaan komit manual.
  • Ideal untuk pengujian regresi CI/CD.

26) Apa perbedaan antara Git Merge Conflict dan Rebase Conflict?

Keduanya muncul ketika Git tidak dapat secara otomatis mendamaikan perbedaan kode, tetapi keduanya terjadi dalam konteks yang berbeda.

Tipe Ketika Itu Terjadi Resolusi
Gabungkan Konflik Selama git merge di antara cabang-cabang Selesaikan di cabang target
Konflik Rebase Selama git rebase saat memutar ulang komitmen Selesaikan saat melakukan rebasing, lalu lanjutkan dengan git rebase --continue

Contoh: Jika baris yang sama diedit secara berbeda di dua cabang, konflik penggabungan akan terjadi; selama rebase, perubahan serupa juga memicu konflik rebase.


27) Bagaimana Git dapat diintegrasikan ke dalam jalur CI/CD?

Git membentuk fondasi alur kerja CI/CD modern dengan memicu proses otomatis pada setiap komitmen atau permintaan penarikan.

Contoh Integrasi:

  • Dorong Komit โ†’ Memicu pipeline CI (melalui Jenkins, GitHub Actions, atau GitLab CI).
  • Bangun & Uji โ†’ Pengujian otomatis memvalidasi komitmen.
  • Menyebarkan โ†’ Perubahan didorong ke tahap pementasan atau produksi.

Manfaat:

  • Memastikan penerapan yang konsisten.
  • Memungkinkan siklus umpan balik yang cepat.
  • Mengurangi kesalahan manusia dalam rilis.

Contoh: GitHub Actions dapat secara otomatis menguji dan menyebarkan proyek ketika perubahan didorong ke main cabang.


28) Apa perbedaan antara git clean dan git reset?

perintah Tujuan Cakupan Example
git clean Menghapus untracberkas ked Direktori kerja git clean -f -d
git reset Memindahkan penunjuk HEAD Komit, indeks, dan pohon kerja git reset --hard HEAD~1

Contoh: Jika ruang kerja Anda tidak memiliki file sementara atau file yang dihasilkan tracDibuat oleh Git, gunakan git cleanJika Anda perlu membatalkan komitmen, gunakan git reset.

olymp trade indonesiaTip: Selalu ulas dengan git clean -n sebelum dijalankan untuk menghindari penghapusan yang tidak disengaja.


29) Apa itu Git Reflog dan Git Log?

Meski keduanya menampilkan riwayat komitmen, keduanya memiliki tujuan berbeda.

perintah Tracks Termasuk Komit yang Dihapus Use Case
git log Riwayat komit yang terlihat Tidak Revlihat kemajuan proyek
git reflog Semua gerakan KEPALA Ya Pulihkan komitmen yang hilang

Contoh: Setelah secara tidak sengaja menghapus cabang, Anda dapat menggunakan git reflog untuk menemukan dan memulihkan komit terakhirnya, yang tidak akan muncul di git log.


30) Apa saja praktik terbaik untuk menggunakan Git secara efektif dalam tim besar?

  1. Gunakan Konvensi Penamaan Cabang: Ikuti pola seperti feature/login-ui or bugfix/payment.
  2. Berkomitmen secara Sering namun Bermakna: Jaga agar setiap komitmen terfokus pada satu perubahan logis.
  3. Menulis DescriptPesan Komitmen: Gunakan kalimat imperatif, misalnya, "Fix user login validation."
  4. Rebase Sebelum Penggabungan: Menjaga riwayat komit tetap bersih.
  5. Gunakan Pull Request untuk Revlihat: Promokolaborasi tes dan kualitas kode.
  6. Rilis Tag Secara Konsisten: Membantu pengendalian versi dan pengembalian.
  7. Otomatisasi Pengujian melalui CI/CD: Memastikan integrasi yang stabil dan rilis yang lebih cepat.

Contoh: Dalam pengembangan perusahaan, penggunaan Git yang terstruktur mencegah konflik dan menyederhanakan manajemen rilis.


31) Apa itu Git Internals dan bagaimana Git menyimpan data?

Internal Git mengacu pada arsitektur tingkat rendah yang mendukung fungsionalitas Git. Git menyimpan semuanya (berkas, direktori, komit) sebagai objek dalam .git/objects direktori. Objek-objek ini diidentifikasi oleh Hash SHA-1 dan dikategorikan sebagai blob, pohon, komit, dan tag.

Siklus Hidup Penyimpanan Data:

  1. Ketika sebuah file ditambahkan, isinya disimpan sebagai blob.
  2. A tree struktur berkas peta.
  3. A commit mengikat pohon dan metadata.
  4. A tag referensi komitmen untuk rilis.

Contoh: Running git cat-file -p <hash> memungkinkan Anda memeriksa objek Git secara langsung.

Desain ini memastikan integritas data, versi trackemampuan, dan kinerja ringan, membuat Git sangat efisien dibandingkan dengan sistem lama seperti SVN.


32) Apa perbedaan antara Git Rebase Interactive dan Git Merge?

Faktor Git Rebase Interaktif (git rebase -i) Penggabungan Git
Tujuan Memungkinkan pengeditan, penataan ulang, dan pemampatan komitmen Menggabungkan sejarah
Sejarah Menulis ulang sejarah Mempertahankan semua komitmen
Use Case Membersihkan sebelum penggabungan Mempertahankan garis waktu asli

Contoh: Sebelum menggabungkan cabang fitur, pengembang dapat menggunakan:

git rebase -i main

untuk menghilangkan komitmen yang tidak diperlukan dan menghasilkan riwayat yang lebih bersih dan linear.

Bergabung lebih aman untuk cabang kolaboratif, sementara Rebase meningkatkan keterbacaan untuk alur kerja pengembangan pribadi.


33) Apa itu Sparse Checkout di Git dan apa manfaatnya?

Pembayaran Jarang memungkinkan pengembang untuk mengkloning atau bekerja hanya dengan sebagian kecil file dari repositori besar, mengurangi penggunaan penyimpanan lokal dan mempercepat operasi.

Perintah:

git clone --no-checkout <repo-url>
git sparse-checkout init --cone
git sparse-checkout set <folder-path>

Manfaat:

  • Meningkatkan kinerja dalam monorepo.
  • Mengurangi penggunaan disk.
  • Ideal untuk arsitektur layanan mikro.

Contoh: Dalam proyek perusahaan besar, pengembang mungkin hanya memerlukan /frontend folder. Sparse Checkout hanya mengunduh direktori tersebut, sehingga menghindari gigabita kode backend yang tidak perlu.


34) Apa itu Klon Dangkal dan kapan sebaiknya digunakan?

A Klon Dangkal hanya mengunduh sebagian riwayat repositori, sehingga pengklonan menjadi jauh lebih cepat.

command:

git clone --depth=1 <repo-url>

Manfaat:

  • Mengurangi waktu kloning untuk repo besar.
  • Menghemat bandwidth dan ruang disk.
  • Berguna untuk jalur CI yang hanya memerlukan komitmen terkini.

kekurangan:

  • Tidak dapat mengakses komitmen lama atau melakukan rebase melampaui kedalaman yang diambil.
  • Visibilitas riwayat terbatas.

Contoh: Sistem CI/CD sering kali menggunakan klon dangkal untuk mengambil versi kode terbaru dengan cepat untuk pembuatan otomatis tanpa riwayat komit lengkap.


35) Apa itu Git LFS (Large File Storage) dan mengapa digunakan?

git-lfs (Large File Storage) adalah ekstensi yang mengganti file besar (misalnya, gambar, kumpulan data, biner) dengan penunjuk teks ringan di dalam Git, sambil menyimpan konten sebenarnya di server LFS jarak jauh.

Contoh Perintah:

git lfs install
git lfs track "*.zip"

Keuntungan:

  • Menjaga repositori tetap ringan.
  • Meningkatkan kinerja dengan file biner besar.
  • Berintegrasi dengan lancar dengan GitHub, GitLab, dan Bitbucket.

Contoh: Tim pengembangan game menggunakan Git LFS untuk menangani aset 3D besar tanpa memperlambat operasi Git normal.


36) Bagaimana Anda mengonfigurasi Git untuk kinerja optimal?

Anda dapat meningkatkan kecepatan dan kegunaan Git dengan menyempurnakan parameter konfigurasi.

Praktik terbaik:

  • Aktifkan Kompresi: git config --global core.compression 9
  • Atur GC Otomatis (Pengumpulan Sampah): git gc --auto
  • Gunakan Pengambilan Paralel (v2.31+): git config --global fetch.parallel 4
  • Aktifkan Pencadangan Kredensial: git config --global credential.helper cache

Contoh: Untuk repositori berskala perusahaan, mengoptimalkan pengaturan pengambilan dan kompresi Git secara signifikan mengurangi latensi klon dan penarikan, sehingga meningkatkan produktivitas di seluruh tim yang terdistribusi.


37) Apa itu Commit Signing (GPG) di Git dan mengapa itu penting?

Penandatanganan komitmen menggunakan GPG (Penjaga Privasi GNU) untuk memverifikasi keaslian komitmen secara kriptografis, memastikan bahwa perubahan berasal dari kontributor tepercaya.

Contoh Pengaturan:

git config --global user.signingkey <GPG-key>
git commit -S -m "Signed commit"

Manfaat:

  • Mencegah komitmen yang tidak sah atau yang ditiru.
  • Meningkatkan keamanan dan auditabilitas repositori.
  • Membangun kepercayaan organisasi.

Contoh: Proyek sumber terbuka sering kali memerlukan komitmen yang ditandatangani GPG untuk mengonfirmasi keaslian kontribusi dari pengembang eksternal.


38) Bagaimana Git menangani berkas biner secara berbeda dari berkas teks?

Git dioptimalkan untuk kode sumber berbasis teks dan tracks perubahan baris demi baris, yang tidak berfungsi dengan baik untuk berkas biner. Berkas biner disimpan sebagai blob tunggal โ€” setiap modifikasi akan menghasilkan versi baru, bukan diff.

Jenis File Efisiensi Penyimpanan Dukungan Diff Penanganan yang Disarankan
Teks Sangat efisien Ya Git Bawaan
Biner Tidak efisien Tidak Gunakan Git LFS

Contoh: Untuk repositori yang banyak memuat gambar, mengaktifkan Git LFS mencegah penurunan kinerja yang disebabkan oleh seringnya pembaruan berkas biner.


39) Bagaimana Anda memecahkan masalah umum Git seperti HEAD terlepas atau kesalahan penggabungan?

Masalah Umum & Perbaikan:

Isu Menyebabkan Solusi
KEPALA TERLEPAS Pemeriksaan komitmen tertentu Buat cabang dengan git checkout -b new-branch
Gabungkan Konflik Pengeditan yang bertentangan dalam file Selesaikan secara manual, lalu git add ke git commit
Komitmen yang Hilang Reset atau rebase yang tidak disengaja penggunaan git reflog untuk memulihkan
Dorongan Ditolak Pembaruan jarak jauh di depan Tarik atau perbaiki sebelum mendorong

Contoh: Ketika kesalahan โ€œnon-fast-forwardโ€ terjadi, biasanya berarti ada perubahan jarak jauh โ€” gunakan git pull --rebase untuk menyinkronkan sebelum mencoba lagi.


40) Apa praktik keamanan terbaik untuk repositori Git?

  1. Gunakan Autentikasi SSH atau HTTPS: Hindari penggunaan kredensial biasa.
  2. Aktifkan 2FA pada platform hosting Git.
  3. Hindari melakukan komitmen rahasia atau kunci: penggunaan .gitignore atau alat seperti GitGuardian.
  4. Menandatangani komitmen dengan kunci GPG.
  5. Batasi kontrol akses: Terapkan prinsip hak istimewa paling sedikit.
  6. Gunakan aturan perlindungan cabang untuk main or master.
  7. Lakukan audit repositori secara berkala.

Contoh: Perusahaan sering kali mengintegrasikan pemindaian rahasia dan menerapkan komitmen yang ditandatangani dalam jalur CI/CD untuk mencegah kebocoran data dan perubahan yang tidak sah.


41) Bagaimana Anda mengotomatiskan operasi Git menggunakan shell atau Python skrip?

Otomatisasi Git meningkatkan produktivitas dan konsistensi dalam tugas berulang seperti komitmen, penggabungan, dan penerapan.

Contoh โ€“ Shell Script:

#!/bin/bash
git add .
git commit -m "Auto commit on $(date)"
git push origin main

Contoh - Python Skrip (menggunakan GitPython):

from git import Repo
repo = Repo('.')
repo.git.add(A=True)
repo.index.commit("Automated commit")
origin = repo.remote(name='origin')
origin.push()

Manfaat:

  • Mengurangi upaya manual.
  • Memastikan pola komit yang konsisten.
  • Terintegrasi secara mulus dengan jalur CI/CD dan DevOps.

42) Apa itu Git Hooks dan bagaimana cara menggunakannya dalam otomatisasi?

Kait Git adalah skrip yang dipicu oleh peristiwa Git tertentu, yang digunakan untuk menegakkan aturan atau mengotomatiskan proses.

Jenis-jenis Kail:

Tipe berjalan pada Example
Sisi klien Mesin pengembang pre-commit, prepare-commit-msg
Sisi server Repo jarak jauh pre-receive, post-receive

Contoh: A pre-commit hook dapat menjalankan linter atau pengujian unit sebelum mengizinkan komit.

Manfaat:

  • Mempertahankan kualitas kode.
  • Mencegah pelanggaran kebijakan.
  • Mengotomatiskan tugas validasi berulang dalam alur kerja.

43) Bagaimana Anda akan memigrasikan proyek dari SVN atau Mercurial ke Git?

Migrasi dari sistem terpusat seperti SVN untuk pergi melibatkan konversi terstruktur untuk mempertahankan riwayat komit.

Tangga:

  1. Instal alat migrasi: git svn or svn2git.
  2. Klon repositori SVN:
    git svn clone <SVN_URL> --trunk=trunk --branches=branches --tags=tags
  3. Konversi tag dan cabang.
  4. Dorong ke repositori Git jarak jauh (misalnya, GitHub).

Keuntungan:

  • Memungkinkan alur kerja terdistribusi.
  • Meningkatkan kinerja dan fleksibilitas.
  • Menyederhanakan percabangan dan penggabungan.

Contoh: Organisasi yang bermigrasi dari sistem SVN lama menggunakan svn2git untuk melestarikan kepenulisan dan mengikat sejarah.


44) Apa perbedaan antara Git Flow dan Pengembangan Berbasis Trunk?

Aspek Aliran Git Pembangunan Berbasis Batang
Bercabang Beberapa cabang (pengembangan, rilis) Cabang utama tunggal
Model Rilis Siklus rilis tetap Penyebaran berkelanjutan
Kompleksitas Sedang ke tinggi Rendah
terbaik Untuk Tim yang besar dan stabil Tim yang tangkas dan bergerak cepat

Contoh: Git Flow paling cocok untuk proyek perusahaan dengan rilis terkendali, sedangkan Trunk-Based ideal untuk perusahaan rintisan atau layanan mikro yang mengutamakan kecepatan.

Perbandingan Manfaat:

  • Alur Git: Kontrol versi yang kuat.
  • Berbasis Batang: Umpan balik yang lebih cepat dan penyelarasan CI/CD.

45) Strategi apa yang dapat mengoptimalkan kinerja Git untuk repositori yang sangat besar?

Untuk proyek skala perusahaan dengan ribuan komitmen atau kontributor, kinerja Git dapat menurun jika tidak dioptimalkan.

Strategi Optimasi Utama:

  1. penggunaan Klon Dangkal (--depth=1) untuk proses pembayaran yang lebih cepat.
  2. penggunaan Pembayaran Jarang untuk mengambil hanya direktori yang relevan.
  3. Run Pengumpulan Sampah: git gc --aggressive.
  4. Membagi monorepo menjadi submodul atau layanan mikro.
  5. Kompres objek dan bungkus file secara teratur.

Contoh: Dalam monorepo yang melebihi 10 GB, mengaktifkan sparse checkout dan pengumpulan sampah rutin secara drastis mengurangi waktu kloning dan pengambilan.


46) Bagaimana Git mendukung pengembangan kolaboratif dalam tim terdistribusi?

Git memungkinkan kolaborasi dengan mendistribusikan salinan repositori lengkap ke seluruh pengembang. Setiap pengembang dapat melakukan komitmen secara lokal, mengirimkan perubahan ke pengembang jarak jauh, dan menggabungkan karya pengembang lain.

Contoh Alur Kerja Kolaboratif:

  1. Fork repositori.
  2. Buat cabang fitur.
  3. Dorong perubahan dan buka permintaan tarik.
  4. Revlihat dan gabungkan menjadi main.

Manfaat:

  • Memungkinkan pengembangan fitur paralel.
  • Mengurangi hambatan ketergantungan.
  • Mendukung pekerjaan offline dan alur kerja yang fleksibel.

Contoh: Kontributor sumber terbuka di seluruh dunia berkolaborasi secara asinkron melalui fork dan pull request yang dihosting di GitHub.


47) Apa itu Git Garbage Collection dan mengapa itu penting?

git gc (Pengumpulan Sampah) membersihkan berkas yang tidak diperlukan dan mengoptimalkan penyimpanan repositori dengan mengompresi objek dan memangkas komit yang tidak dapat dijangkau.

command:

git gc --aggressive --prune=now

Manfaat:

  • Membebaskan ruang disk.
  • Meningkatkan kinerja repositori.
  • Mengurangi redundansi dalam objek komit.

Contoh: Pengembang sering menjalankan git gc setelah beberapa penggabungan atau penghapusan cabang untuk menjaga kesehatan repositori, terutama dalam proyek jangka panjang.


48) Apa itu Git Blame dan bagaimana cara penggunaannya untuk debugging?

git blame mengidentifikasi komit dan penulis mana yang terakhir memodifikasi setiap baris berkas.

Contoh Perintah:

git blame app.py

Gunakan Kasus:

  • Tracpengenalan bug.
  • Mengidentifikasi kepemilikan bagian kode.
  • Audit perubahan untuk akuntabilitas.

Contoh: Jika suatu fungsi mulai gagal setelah pembaruan terkini, git blame dapat menentukan komitmen spesifik dan pengembang yang membuat perubahan, membantu proses penelusuran kesalahan lebih cepat.


49) Apa perbedaan antara Forking dan Cloning di Git?

Faktor Garpu Klon
Definisi Salinan repositori di bawah akun Anda pada layanan hosting Salinan lokal repositori
Lokasi Sisi server (misalnya, GitHub) Mesin pengembang
Use Case Berkontribusi pada proyek lain Pembangunan daerah
Hubungan Terhubung melalui permintaan tarik Sinkronisasi langsung dengan jarak jauh

Contoh: Saat berkontribusi pada proyek sumber terbuka, Anda membuat cabang repositori, membuat perubahan secara lokal setelah mengkloning, dan mengirimkan permintaan penarikan untuk ditinjau.


50) Apa kesalahan Git yang paling umum dan bagaimana cara menghindarinya?

Kesalahan Deskripsi Pencegahan
Komitmen data sensitif Rahasia atau kredensial disertakan penggunaan .gitignore atau GitGuardian
Memaksa mendorong ke cabang bersama Menimpa pekerjaan orang lain penggunaan --force-with-lease
Komit biner besar Memperlambat kinerja repo Gunakan Git LFS
Melewatkanping ulasan kode Menyebabkan kualitas buruk Gunakan permintaan tarik
Mengabaikan konflik rebase Menyebabkan kekacauan gabungan Selesaikan konflik dengan hati-hati sebelum melakukan push

Contoh: Seorang pengembang secara tidak sengaja mendorong .env file dengan kredensial dapat mengekspos informasi sensitif; ini dapat dihindari dengan .gitignore aturan dan kait pra-komit.

๐Ÿ” Pertanyaan Wawancara GIT Teratas dengan Skenario Dunia Nyata & Respons Strategis

1) Apa itu Git, dan apa bedanya dengan sistem kontrol versi lainnya?

Diharapkan dari kandidat: Pewawancara ingin menilai pemahaman Anda tentang dasar-dasar Git dan kelebihannya dibandingkan sistem terpusat.

Contoh jawaban: Git adalah sistem kontrol versi terdistribusi yang memungkinkan pengembang untuk tracGit memungkinkan setiap pengembang untuk memiliki salinan lengkap repositori, termasuk riwayatnya, untuk melakukan perubahan pada basis kode mereka. Struktur ini mendukung pekerjaan offline, operasi yang lebih cepat, dan kemampuan percabangan dan penggabungan yang lebih baik.


2) Bisakah Anda menjelaskan perbedaan antara git fetch, git pull, dan git merge?

Diharapkan dari kandidat: Pewawancara menguji pengetahuan Anda tentang perintah-perintah Git umum dan tujuannya.

Contoh jawaban: git fetch mengunduh data baru dari repositori jarak jauh tetapi tidak mengintegrasikannya ke cabang Anda saat ini. git pull melakukan pengambilan yang diikuti oleh penggabungan otomatis, yang mengintegrasikan komitmen baru. git merge digunakan untuk menggabungkan perubahan dari satu cabang ke cabang lain secara manual setelah mengambil pembaruan.


3) Jelaskan situasi di mana Anda harus menyelesaikan konflik penggabungan. Bagaimana Anda menanganinya?

Diharapkan dari kandidat: Pewawancara ingin mengetahui keterampilan Anda dalam menyelesaikan konflik dan kemampuan mengelola alur kerja kolaboratif.

Contoh jawaban: Di pekerjaan terakhir saya, kami sering bekerja di cabang yang sama, yang terkadang menyebabkan konflik penggabungan. Ketika saya mengalaminya, saya menggunakan git status untuk mengidentifikasi berkas yang konflik dan meninjau kedua versi untuk memutuskan perubahan mana yang akan dipertahankan. Setelah mengedit dan menguji berkas, saya menandai konflik tersebut sebagai terselesaikan dan melakukan perubahan. Saya juga berkomunikasi dengan tim untuk menghindari masalah serupa di masa mendatang dengan meningkatkan praktik manajemen cabang.


4) Bagaimana Anda menggunakan strategi percabangan di Git untuk mengelola proyek?

Diharapkan dari kandidat: Pewawancara ingin melihat apakah Anda memahami alur kerja terstruktur seperti Git Flow atau pengembangan berbasis trunk.

Contoh jawaban: Saya biasanya menggunakan strategi Git Flow yang mencakup main, develop, dan cabang fitur. Cabang fitur dibuat untuk setiap tugas baru, digabungkan ke dalam develop setelah selesai, dan kemudian diuji sebelum digabungkan ke mainMetode ini memastikan integrasi yang terkendali dan siklus rilis yang bersih.


5) Langkah apa yang akan Anda ambil jika Anda secara tidak sengaja memasukkan informasi sensitif ke repositori Git?

Diharapkan dari kandidat: Pewawancara menilai kemampuan Anda untuk menanggapi masalah keamanan atau kepatuhan secara efektif.

Contoh jawaban: Pertama, saya akan menghapus file sensitif menggunakan git rm --cached dan melakukan perubahan. Selanjutnya, saya akan menggunakan alat seperti git filter-branch or BFG Repo-Cleaner untuk menghapus informasi dari riwayat. Terakhir, saya akan merotasi kredensial yang terekspos dan memberi tahu pemangku kepentingan terkait untuk mencegah potensi risiko.


6) Bagaimana Anda memastikan konsistensi kode ketika banyak pengembang melakukan komitmen secara bersamaan?

Diharapkan dari kandidat: Pewawancara ingin memahami bagaimana Anda menjaga integritas kode dalam lingkungan kolaboratif.

Contoh jawaban: Di pekerjaan saya sebelumnya, kami menerapkan kebijakan yang mewajibkan semua komitmen untuk melalui permintaan tarik dan peninjauan kode. Pemeriksaan CI otomatis memastikan bahwa hanya kode yang telah diuji dan ditinjau yang digabungkan. Pendekatan ini menjaga kualitas dan konsistensi di semua cabang.


7) Bagaimana Anda mengembalikan komitmen yang telah didorong ke cabang bersama?

Diharapkan dari kandidat: Pewawancara ingin tahu apakah Anda memahami cara mengelola kesalahan dengan aman dalam repositori bersama.

Contoh jawaban: Cara paling aman adalah dengan menggunakan git revert <commit_id>, yang membuat komit baru yang membatalkan perubahan dari komit yang ditentukan. Hal ini mempertahankan riwayat proyek dan menghindari gangguan pada pengembang lain, tidak seperti git reset, yang menulis ulang sejarah.


8) Ceritakan kepada saya tentang saat Anda harus mengelola beberapa cabang untuk rilis yang berbeda.

Diharapkan dari kandidat: Pewawancara ingin mengetahui kemampuan Anda dalam mengelola kompleksitas dalam pengendalian versi.

Contoh jawaban: Dalam peran saya sebelumnya, kami mengelola beberapa versi rilis untuk klien. Saya menggunakan cabang rilis terpisah untuk setiap versi dan menerapkan perbaikan penting secara selektif. Hal ini memastikan bahwa pembaruan diterapkan secara konsisten tanpa menimbulkan regresi di versi yang lebih baru.


9) Bagaimana Anda menangani repositori besar dengan banyak kontributor untuk menjaga kinerja tetap optimal?

Diharapkan dari kandidat: Pewawancara sedang mengevaluasi pengetahuan Anda tentang penskalaan Git secara efektif.

Contoh jawaban: Saya mendorong kloning dangkal (--depth) untuk akses dan penggunaan yang lebih cepat .gitignore untuk mengecualikan berkas yang tidak perlu. Kami juga memangkas cabang lama secara berkala dan menggunakan Git LFS (Large File Storage) untuk aset biner. Langkah-langkah ini menjaga repositori tetap efisien dan mudah dikelola.


10) Jelaskan skenario di mana Anda harus men-debug masalah Git yang mengganggu pengembangan. Apa pendekatan Anda?

Diharapkan dari kandidat: Pewawancara ingin melihat kemampuan berpikir analitis dan pemecahan masalah Anda.

Contoh jawaban: Di posisi sebelumnya, riwayat cabang seorang anggota tim rusak karena rebase yang salah. Saya menyelidikinya menggunakan git log ke git reflog untuk tracKemudian, saya memulihkan commit yang benar menggunakan git cherry-pick dan memastikan semua cabang lokal disinkronkan dengan versi jarak jauh yang telah diperbaiki. Hal ini mencegah gangguan lebih lanjut dan menjaga produktivitas tim.

Ringkaslah postingan ini dengan: