Program
Git adalah alat penting dalam perangkat pengembang modern, dikenal karena kemampuan kontrol versi yang kuat. Diciptakan oleh Linus Torvalds pada 2005 untuk mendukung pengembangan kernel Linux, Git sejak itu menjadi tulang punggung tak terhitung banyaknya proyek perangkat lunak di seluruh dunia. Efisiensi dan fleksibilitasnya dalam mengelola versi proyek, ditambah dukungan kolaborasi yang andal, menjadikannya tak tergantikan bagi tim dari berbagai ukuran.
Artikel ini bertujuan membantu Anda mempersiapkan wawancara teknis dengan membahas 20 pertanyaan wawancara Git teratas yang mencakup tingkat pemula hingga lanjutan. Baik Anda baru menggunakan Git maupun ingin memperdalam pemahaman, tanya jawab berikut akan membantu Anda menunjukkan kemahiran dan sukses dalam wawancara.
Pertanyaan Wawancara Git Dasar
Jika Anda relatif baru dengan Git, kemungkinan beberapa pertanyaan dasar wawancara akan membahas konsep dan penggunaan tingkat pemula. Jika Anda perlu menyegarkan ingatan, pastikan untuk melihat kursus Introduction to Git dari DataCamp.
Apa itu repositori Git?
Repositori Git menyimpan file dan riwayat revisi suatu proyek serta memfasilitasi kontrol versi dengan melacak perubahan seiring waktu. Repositori dapat berada secara lokal di dalam folder pada perangkat Anda atau di platform online seperti GitHub. Ini memungkinkan pengguna untuk berkolaborasi, kembali ke versi sebelumnya, dan mengelola pengembangan proyek secara efisien menggunakan perintah seperti commit, push, dan pull.
Bagaimana cara kerja Git?
Git bekerja dengan mencatat perubahan pada file dan direktori dalam sebuah proyek, menangkap snapshot dari kondisinya yang berkembang. Pengguna dapat memantau perubahan, membuat branch untuk pengembangan simultan, menggabungkan branch, dan kembali ke keadaan sebelumnya jika diperlukan. Git juga mendorong kolaborasi dan memastikan kontrol versi yang efektif dalam pengembangan perangkat lunak.
Apa itu git add?
Perintah git add digunakan di Git untuk menandai perubahan agar disertakan dalam commit berikutnya. Perintah ini menyiapkan modifikasi, penambahan, atau penghapusan pada file di working directory, menandainya untuk dimasukkan dalam snapshot commit mendatang. Perhatikan bahwa perintah ini tidak benar-benar melakukan commit, melainkan hanya menyiapkan perubahan untuk staging.
Apa itu git push?
Perintah git push digunakan di Git untuk mengunggah konten repositori lokal ke repositori remote. Ini mentransfer perubahan yang sudah di-commit dari repositori lokal ke repositori remote, biasanya pada server seperti GitHub atau GitLab. Perintah ini memungkinkan kolaborasi dengan cara membagikan perubahan Anda kepada orang lain dalam proyek yang sama.
Anda dapat mempelajari lebih lanjut tentang Git push dan pull di tutorial terpisah kami.
Apa itu git status?
Perintah git status menampilkan kondisi terkini repositori di Git. Ini memberikan informasi tentang file mana yang telah dimodifikasi, mana yang sudah staged untuk commit berikutnya, dan mana yang belum dilacak (untracked). Perintah ini membantu pengguna melacak progres pekerjaan dan mengidentifikasi perubahan yang perlu di-commit atau di-staging.
Apa itu commit dalam Git?
Sebuah commit merepresentasikan snapshot dari perubahan yang dilakukan pada file di repositori pada waktu tertentu. Saat Anda melakukan commit di Git, Anda pada dasarnya menyimpan keadaan saat ini dari file Anda dan dapat memberikan pesan deskriptif yang menjelaskan perubahan yang dilakukan (sangat disarankan).
Setiap commit membuat pengenal unik, yang memungkinkan Anda melacak riwayat perubahan dalam repositori. Commit berperan penting dalam kontrol versi, karena menyediakan cara untuk kembali ke keadaan proyek sebelumnya, meninjau riwayat perubahan, dan berkolaborasi dengan membagikan pembaruan.

Lihat Git Cheat Sheet dari DataCamp untuk membantu persiapan wawancara Anda
Apa itu branching dalam Git?
Branching mengacu pada praktik menyimpang dari jalur utama pengembangan (biasanya disebut main dan sebelumnya disebut branch master) untuk mengerjakan fitur baru, perbaikan, atau eksperimen tanpa memengaruhi kode utama. Ini memungkinkan beberapa jalur pengembangan paralel hidup berdampingan dalam repositori yang sama.
Setiap branch mewakili jalur pengembangan terpisah dengan rangkaian commit sendiri, sehingga pengembang dapat mengerjakan fitur atau perbaikan berbeda secara bersamaan. Branching memfasilitasi kolaborasi, eksperimen, dan pengorganisasian dalam proyek, karena perubahan pada satu branch dapat digabungkan kembali ke basis kode utama setelah selesai dan diuji.
Apa itu conflict dalam Git?
Conflict muncul ketika perubahan yang saling bertentangan dilakukan pada bagian yang sama dari sebuah file atau beberapa file oleh kontributor berbeda, biasanya saat operasi merge atau rebase. Git tidak dapat menyelesaikan konflik ini secara otomatis, sehingga memerlukan intervensi manual oleh pengguna untuk menyelesaikan ketidaksesuaian.
Untuk menyelesaikan conflict, buka file yang terdampak — Git akan menandai bagian yang konflik dengan penanda <<<<<<<, =======, dan >>>>>>>. Edit file untuk mempertahankan versi yang benar, hapus penanda tersebut, lalu:
git add <resolved-file>
git commit
git mergetool dapat membuat proses ini menjadi visual dan lebih mudah dinavigasi.Apa itu merge dalam Git?
Merge adalah operasi fundamental di Git yang memfasilitasi kolaborasi dan integrasi perubahan antar-branch dalam sebuah proyek. Secara khusus, merge adalah proses menggabungkan perubahan dari berbagai branch ke satu branch, biasanya branch utama (misalnya, master atau main).
Merge mengintegrasikan perubahan yang dibuat di satu branch dengan branch lain, menghasilkan commit baru yang menggabungkan riwayat kedua branch. Anda dapat mempelajari lebih lanjut tentang cara menyelesaikan konflik merge di Git melalui tutorial terpisah kami.
Pertanyaan Wawancara Git Tingkat Menengah
Apa itu remote dalam Git?
Remote adalah repositori yang dihosting di server atau komputer lain untuk kolaborasi dan berbagi kode dengan orang lain. Ini berfungsi sebagai lokasi terpusat tempat pengembang dapat melakukan push perubahan lokal mereka dan melakukan pull perubahan yang dibuat oleh orang lain.
Remote biasanya disetel pada platform hosting seperti GitHub, GitLab, atau Bitbucket, dan memungkinkan pengembangan terdistribusi serta memfasilitasi kerja tim dengan menyediakan lokasi umum untuk menyimpan dan menyinkronkan kode proyek di antara banyak kontributor.
Bagaimana cara membatalkan commit yang sudah di-push dan dipublikasikan?
Perintah git revert <commit-hash> dapat digunakan untuk membatalkan commit yang sudah di-push dan dipublikasikan.
Proses langkah demi langkahnya sebagai berikut:
1. Identifikasi commit yang ingin Anda kembalikan dengan menemukan hash commit-nya. Ini dapat dilakukan menggunakan perintah git log untuk melihat riwayat commit dan menemukan hash commit yang ingin Anda kembalikan.
2. Setelah Anda memiliki hash commit, gunakan perintah git revert diikuti hash commit untuk membuat commit baru yang membatalkan perubahan yang diperkenalkan oleh commit tersebut. Contohnya:
git revert <commit-hash>
3. Git akan membuka editor teks untuk membuat pesan commit bagi revert. Anda dapat mengedit pesan jika perlu, lalu simpan dan tutup editor.
4. Setelah menyimpan pesan commit, Git akan membuat commit baru yang secara efektif membatalkan perubahan yang diperkenalkan oleh commit tersebut. Commit baru ini akan ditambahkan ke riwayat, sehingga membalikkan perubahan yang dibuat oleh commit asli.
5. Terakhir, lakukan push commit baru ke repositori remote untuk mempublikasikan revert menggunakan perintah berikut:
git push origin <branch-name>
Menggunakan git revert membuat commit baru yang membatalkan perubahan dari commit asli, sehingga mengembalikan perubahan tanpa mengubah riwayat commit. Pendekatan ini lebih aman daripada git reset atau git amend, yang dapat mengubah riwayat commit dan menimbulkan masalah bagi kolaborator yang sudah melakukan pull perubahan.
Apa itu git stash?
git stash adalah perintah Git yang menyimpan sementara perubahan di working directory yang belum siap untuk di-commit. Ini memungkinkan pengembang menyimpan modifikasi tanpa melakukan commit ke repositori.
Stashing berguna saat berpindah branch, tetapi Anda tidak ingin melakukan commit atau kehilangan perubahan. Nantinya, Anda dapat menerapkan perubahan yang di-stash ke working directory atau memunculkannya dari tumpukan stash untuk melanjutkan pekerjaan.
Apa itu git reflog?
git reflog adalah perintah Git yang digunakan untuk melihat reference log, yang mencatat perubahan pada pointer HEAD dan riwayat commit yang pernah di-checkout di repositori. Ini menyediakan daftar kronologis tindakan terbaru yang dilakukan di repositori, termasuk commit, checkout, merge, dan reset.
Reflog berguna untuk memulihkan commit atau branch yang hilang dan memahami urutan tindakan yang dilakukan di repositori.
Bagaimana membuat branch Git yang ada melacak branch remote?
Untuk membuat branch Git yang ada melacak branch remote, Anda dapat menggunakan perintah git branch dengan opsi --set-upstream-to atau -u, diikuti nama branch remote.
Sintaksnya akan seperti berikut:
git branch --set-upstream-to=<remote-name>/<branch-name>
atau
git branch -u <remote-name>/<branch-name>
Pertanyaan Wawancara Git Tingkat Lanjutan
Bagaimana Anda mengelola beberapa konfigurasi untuk proyek berbeda di Git?
Untuk menangani berbagai konfigurasi, gunakan perintah git config bersama flag --global, --system, atau --local untuk menyesuaikan pengaturan konfigurasi pada tingkat yang berbeda. Atau, gunakan includeIf dalam konfigurasi Git untuk menyertakan pengaturan tertentu berdasarkan path repositori.
Bagaimana menangani file berukuran besar dengan Git?
Menangani file besar di Git bisa menantang karena dampaknya pada ukuran repositori dan kinerja. Gunakan Git LFS untuk menyimpan file besar di luar repositori Git sambil mempertahankan pointer ringan ke file tersebut di repositori. Ini mengurangi ukuran repositori dan meningkatkan kinerja. Git LFS mendukung berbagai penyedia penyimpanan dan terintegrasi mulus dengan alur kerja Git.
Apa kegunaan git submodule dan bagaimana cara memperbaruinya?
Perintah git submodule mengelola dependensi eksternal di dalam repositori Git. Ini memungkinkan Anda menyertakan repositori eksternal sebagai submodule di dalam repositori utama. Ini berguna saat Anda ingin memasukkan kode dari sumber eksternal sambil tetap memisahkannya dari basis kode utama proyek Anda.
Untuk memperbarui submodule di Git, Anda dapat menggunakan langkah-langkah berikut:
-
Masuk ke direktori submodule di dalam repositori utama Anda.
-
Gunakan
git fetchuntuk mengambil perubahan terbaru dari repositori remote submodule. -
Jika Anda ingin memperbarui ke commit terbaru pada branch yang dilacak oleh submodule, gunakan
git pull. -
Atau, jika Anda ingin memperbarui ke commit atau branch tertentu, gunakan
git checkoutdiikuti hash commit atau nama branch yang diinginkan. -
Setelah memperbarui submodule ke keadaan yang diinginkan, Anda perlu melakukan commit perubahan pada repositori utama untuk mencerminkan status submodule yang diperbarui.
Apa itu git cherry-pick dan kapan Anda menggunakannya?
git cherry-pick memungkinkan Anda menerapkan commit tertentu dari satu branch ke branch lain, tanpa melakukan merge seluruh branch.
git cherry-pick <commit-hash>
main tetapi Anda juga memerlukan perbaikan itu di branch release — Anda dapat melakukan cherry-pick hanya commit tersebut alih-alih melakukan merge seluruh main ke release.Ini juga berguna saat sebuah commit secara tidak sengaja dibuat ke branch yang salah: lakukan cherry-pick ke branch yang benar, lalu revert dari tempat yang tidak semestinya.
Apa itu git bisect dan untuk apa digunakan?
git bisect adalah alat debugging yang menggunakan pencarian biner untuk menemukan commit spesifik yang memperkenalkan bug. Alih-alih memeriksa commit satu per satu secara manual, Anda memberi tahu Git commit mana yang "baik" (bebas bug) dan mana yang "buruk" (mengandung bug), lalu Git akan melakukan checkout commit di antaranya, membagi dua ruang pencarian setiap kali hingga menemukan penyebabnya.
git bisect start
git bisect bad # commit saat ini memiliki bug
git bisect good <commit-hash> # commit lama ini baik-baik saja
# Git melakukan checkout commit di antaranya; Anda mengujinya, lalu:
git bisect good # atau git bisect bad
# ulangi hingga Git mengidentifikasi commit buruk pertama
git bisect reset # kembali ke keadaan semula setelah selesai
Ini jauh lebih cepat daripada pencarian manual di repositori besar dengan ratusan commit.
Apa itu Git hooks dan bagaimana cara menggunakannya?
Git hooks adalah skrip yang berjalan secara otomatis pada titik-titik tertentu dalam alur kerja Git. Skrip ini berada di direktori .git/hooks/ dalam sebuah repositori dan dapat ditulis dalam bahasa scripting apa pun.
Ada dua jenis:
-
Client-side hooks berjalan di mesin lokal Anda — misalnya,
pre-commit(berjalan sebelum commit dibuat) ataucommit-msg(memvalidasi format pesan commit). -
Server-side hooks berjalan di server remote — misalnya,
pre-receive(berjalan sebelum commit yang di-push diterima).
Kasus umum adalah menggunakan hook pre-commit untuk otomatis menjalankan linter atau rangkaian pengujian sebelum mengizinkan commit. Ini menegakkan standar kualitas kode di seluruh tim.
Perhatikan bahwa hook tidak disalin saat Anda meng-clone repositori, sehingga tim yang mengandalkannya biasanya membagikannya melalui skrip terpisah atau alat seperti pre-commit (paket Python).
Pertanyaan tentang Konsep Git yang Sering Membingungkan
Apa perbedaan antara git fetch dan git pull?
Perbedaan utama antara git fetch dan git pull terletak pada apa yang mereka lakukan dan bagaimana keduanya memperbarui repositori lokal.
Perintah git fetch mengambil perubahan dari repositori remote ke repositori lokal. Ini memperbarui remote-tracking branch (misalnya, origin/master) di repositori lokal agar mencerminkan kondisi repositori remote, tetapi tidak memperbarui working directory atau melakukan merge perubahan ke branch saat ini. Artinya, setelah melakukan fetch, Anda dapat meninjau perubahan yang dibuat di repositori remote tanpa memengaruhi pekerjaan lokal Anda.
Perintah git pull juga mengambil perubahan dari repositori remote, tetapi melangkah lebih jauh dengan melakukan fetch dan langsung melakukan merge ke branch saat ini dalam satu langkah. Secara esensial, ini melakukan git fetch diikuti git merge untuk memasukkan perubahan dari repositori remote ke branch saat ini.
Apa yang dilakukan git reset?
Perintah git reset mengatur ulang HEAD saat ini ke keadaan yang ditentukan. Artinya, perintah ini dapat digunakan untuk membatalkan perubahan, menghapus staging file, atau memindahkan pointer HEAD ke commit lain. Perhatikan, ada tiga mode utama git reset:
--soft: Mengatur ulang pointer HEAD ke commit tertentu, tetap mempertahankan perubahan dalam keadaan staged. File tetap termodifikasi di working directory, sehingga Anda dapat melakukan commit ulang.
--mixed: Mengatur ulang pointer HEAD ke commit tertentu, menghapus staging perubahan. File tetap termodifikasi di working directory, tetapi perubahan tidak lagi di-staging untuk commit.
--hard: Mengatur ulang pointer HEAD ke commit tertentu, membuang semua perubahan di working directory dan area staging. Gunakan dengan hati-hati, karena ini secara permanen menghapus perubahan yang belum di-commit.
Penting: Jangan pernah menggunakan git reset --hard pada commit yang sudah di-push ke branch remote bersama. Ini menulis ulang riwayat dan akan menimbulkan masalah serius bagi rekan tim yang sudah melakukan pull commit tersebut. Gunakan git revert untuk commit publik.
Apa pentingnya git push --force-with-lease dibandingkan git push --force?
git push --force-with-lease adalah pendekatan yang lebih berhati-hati untuk melakukan force-push perubahan ke repositori remote dibandingkan git push --force karena mencegah penimpaan perubahan orang lain secara tidak sengaja di repositori remote.
Saat Anda menggunakan git push --force, Anda memaksa push perubahan ke repositori remote terlepas dari apakah orang lain telah memperbaruinya sejak fetch terakhir Anda. Ini dapat menyebabkan hilangnya pekerjaan pengembang lain tanpa sengaja.
Sebaliknya, git push --force-with-lease adalah alternatif yang lebih aman. Perintah ini memeriksa apakah branch remote yang Anda tuju telah diperbarui oleh orang lain sejak fetch terakhir Anda. Jika branch remote telah diperbarui, push akan ditolak, sehingga mencegah Anda menimpa perubahan orang lain tanpa sengaja.
Apa itu git rebase, dan bagaimana perbedaannya dengan git merge?
Baik git rebase maupun git merge mengintegrasikan perubahan dari satu branch ke branch lain, tetapi caranya berbeda.
-
git mergemenggabungkan riwayat dua branch dengan membuat "merge commit" baru. Ini mempertahankan riwayat lengkap kapan branch bercabang dan kembali bergabung, yang berguna untuk jejak audit dan transparansi tim. -
git rebasememindahkan atau memutar ulang commit dari satu branch di atas branch lain, menghasilkan riwayat commit yang bersih dan linear tanpa merge commit. Ini membuat log lebih mudah dibaca, tetapi menulis ulang riwayat commit. Karena itu, aturan emas rebase adalah: jangan pernah melakukan rebase pada branch yang sedang dikerjakan orang lain.
Apa perbedaan antara git clone dan git fork?
Clone membuat salinan lokal dari repositori remote di mesin Anda. Anda tetap terhubung ke repositori yang sama dan dapat melakukan push kembali (jika memiliki izin).
git clone https://github.com/user/repo.git
Fork adalah alur kerja standar untuk berkontribusi ke proyek open-source di mana Anda tidak memiliki akses tulis langsung ke repositori asli.
Mempersiapkan Wawancara Git
Menyampaikan pengetahuan dan pengalaman Git Anda saat wawancara sangat penting untuk menunjukkan kemahiran Anda dalam kontrol versi dan kolaborasi di dalam tim pengembangan perangkat lunak.
Mari kita lihat beberapa tips yang sebaiknya diikuti saat mempersiapkan wawancara teknis agar Anda dapat mengomunikasikan keterampilan Git secara efektif:
Pahami fundamental Git
Pastikan Anda memiliki pemahaman yang kuat tentang fundamental Git, termasuk repositori, branching, merge, commit, dan perintah dasar seperti pull, push, clone, dan commit. Pengetahuan dasar ini akan menjadi landasan diskusi Anda selama wawancara. Akan lebih baik jika Anda juga memahami secara menyeluruh prinsip-prinsip penting seperti kontrol versi, termasuk membedakan perbedaan antara Git dan sistem kontrol versi lainnya.
Terakhir, kenali berbagai metodologi Git, seperti Git Flow, GitHub Flow, dan GitLab Flow. Nilai kelebihan dan kekurangan masing-masing pendekatan serta pahami situasi ketika masing-masing paling bermanfaat.
Panduan lengkap Git kami adalah titik awal yang baik untuk mengenali fundamental.
Dapatkan pengalaman langsung
Semakin sering Anda menggunakan Git, semakin kuat pengetahuan Anda. Latihan rutin meningkatkan keakraban Anda dengan berbagai perintah dan prosedur. Usahakan untuk mengintegrasikan Git ke dalam alur kerja harian agar mendapatkan lebih banyak paparan. Pastikan untuk bereksperimen dengan membuat branch, menggabungkannya, dan menyelesaikan konflik.
Jika Anda tidak yakin proyek apa yang harus dikerjakan untuk mendapatkan pengalaman langsung dengan Git, berpartisipasi dalam proyek open-source melalui platform seperti GitHub adalah cara yang bagus untuk mendapatkan paparan langsung terhadap alat dan alur kerja kolaborasi standar industri.
Pelajari masalah umum dan cara menanganinya
Anda pasti akan menemui masalah saat menggunakan Git. Beberapa masalah umum meliputi konflik merge, keadaan HEAD terlepas (detached), membalikkan perubahan, dan memulihkan commit yang hilang. Mendiagnosis masalah Git meningkatkan keterampilan pemecahan masalah dan menumbuhkan pemahaman yang lebih dalam tentang mekanisme Git.
Dengan secara aktif menelusuri masalah dan menganalisis pesan kesalahan, Anda akan mendapatkan wawasan tentang cara kerja internal Git dan mahir mengidentifikasi serta menyelesaikan masalah secara efisien. Pendekatan proaktif ini mengurangi risiko potensial dan secara efektif membangun kepercayaan diri serta keahlian dalam mengelola alur kerja kontrol versi.
Latihan wawancara simulasi
Dengan mengikuti wawancara simulasi, kandidat dapat mengidentifikasi area kelemahan dalam pengetahuan Git dan keterampilan komunikasi mereka, sehingga dapat memfokuskan upaya persiapan secara efektif.
Selain itu, wawancara simulasi menawarkan kesempatan berharga bagi kandidat untuk mengasah kemampuan pemecahan masalah dengan menangani skenario terkait Git dan latihan pengkodean yang realistis. Praktik langsung ini membantu kandidat membangun kepercayaan diri pada keterampilan Git dan meningkatkan kemampuan menyampaikan pemikiran dengan jelas selama wawancara.
Kesimpulan
Git adalah sistem kontrol versi yang kuat dan banyak digunakan dalam pengembangan perangkat lunak untuk mengelola perubahan kode, berkolaborasi dengan orang lain, dan mempertahankan riwayat proyek. Keakraban dengan Git sangat penting untuk wawancara teknis karena menunjukkan kemahiran dalam alat dan alur kerja pengembang yang esensial, memperlihatkan keterampilan kolaborasi, dan menyoroti kemampuan mengelola kode secara efektif dalam lingkungan tim.
Selain itu, memahami konsep dan perintah Git memungkinkan praktik kontrol versi yang efisien, memastikan integritas kode, kesinambungan proyek, dan proses pengembangan yang lebih lancar. Jadi, pengetahuan tentang Git sangat berharga bagi calon software engineer dan developer yang menghadapi wawancara teknis dan mengejar karier yang sukses
Untuk pembelajaran lebih lanjut, lihat sumber daya berikut:

