Program
Git adalah alat penting dalam perangkat kerja pengembang modern, terkenal karena kemampuan pengendalian versi yang kuat. Diciptakan oleh Linus Torvalds pada tahun 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 mempersiapkan Anda untuk wawancara teknis dengan membahas 20 pertanyaan wawancara Git teratas yang mencakup tingkat pemula hingga lanjutan. Baik Anda baru mengenal Git atau ingin memperdalam pemahaman, tanya jawab ini akan membantu Anda menunjukkan kemahiran dan sukses dalam wawancara.
Pertanyaan Wawancara Git Dasar
Jika Anda relatif baru menggunakan Git, kemungkinan beberapa pertanyaan dasar wawancara akan membahas konsep dan penggunaan tingkat pemula. Jika Anda perlu menyegarkan pemahaman, pastikan untuk melihat kursus Introduction to Git dari DataCamp.
1. Apa itu repositori Git?
Repositori Git menyimpan file proyek dan riwayat revisinya serta memfasilitasi pengendalian versi dengan melacak perubahan yang dilakukan seiring waktu. Repositori dapat berada secara lokal dalam folder di perangkat Anda atau pada platform daring seperti GitHub. Ini memungkinkan pengguna untuk berkolaborasi, kembali ke versi sebelumnya, dan mengelola pengembangan proyek secara efisien menggunakan perintah seperti commit, push, dan pull.
2. Bagaimana cara kerja Git?
Git beroperasi dengan mencatat perubahan yang dibuat pada file dan direktori dalam sebuah proyek, menangkap cuplikan (snapshot) dari kondisinya yang terus berkembang. Pengguna dapat memantau perubahan, membuat branch untuk pengembangan simultan, menggabungkan branch, dan kembali ke keadaan sebelumnya jika diperlukan. Git juga mendukung kolaborasi dan memastikan pengendalian versi yang efektif dalam pengembangan perangkat lunak.
3. Apa itu git add?
Perintah git add digunakan di Git untuk men-stage perubahan agar disertakan dalam commit berikutnya. Perintah ini menyiapkan modifikasi, penambahan, atau penghapusan yang dilakukan pada file di working directory, menandainya untuk dimasukkan dalam snapshot commit yang akan datang. Perhatikan bahwa perintah ini tidak benar-benar melakukan commit perubahan, melainkan menyiapkannya untuk staging.
4. Apa itu git push?
Perintah git push digunakan di Git untuk mengunggah konten repositori lokal ke repositori remote. Perintah ini mentransfer perubahan yang sudah di-commit dari repositori lokal ke repositori remote, biasanya di server seperti GitHub atau GitLab. Perintah ini memungkinkan kolaborasi dengan memungkinkan pengguna membagikan perubahan mereka kepada orang lain dalam proyek yang sama.
Anda dapat mempelajari lebih lanjut tentang Git push dan pull dalam tutorial terpisah kami.
5. Apa itu git status?
Perintah git status menampilkan status terkini repositori di Git. Perintah ini memberikan informasi tentang file mana yang telah dimodifikasi, mana yang sudah di-stage untuk commit berikutnya, dan mana yang belum terlacak. Ini membantu pengguna memantau kemajuan pekerjaan dan mengidentifikasi perubahan apa yang perlu di-commit atau di-stage.
6. Apa itu commit di Git?
Commit merepresentasikan snapshot dari perubahan yang dibuat pada file di sebuah repositori pada titik waktu tertentu. Saat Anda melakukan commit perubahan di Git, Anda pada dasarnya menyimpan keadaan terkini file Anda dan dapat memberikan pesan deskriptif yang menjelaskan perubahan yang dilakukan (yang sangat disarankan).
Setiap commit membuat pengenal unik, memungkinkan Anda melacak riwayat perubahan di repositori. Commit memainkan peran penting dalam pengendalian versi, karena menyediakan cara untuk kembali ke keadaan proyek sebelumnya, meninjau riwayat perubahan, dan berkolaborasi dengan orang lain dengan membagikan pembaruan.

Lihat Git Cheat Sheet dari DataCamp untuk membantu persiapan wawancara Anda
7. Apa itu branching di Git?
Branching mengacu pada praktik bercabang dari lini utama pengembangan (biasanya disebut branch "master") untuk mengerjakan fitur baru, perbaikan, atau eksperimen tanpa memengaruhi basis kode utama. Ini memungkinkan beberapa lini pengembangan paralel berdampingan dalam repositori yang sama.
Setiap branch mewakili lini pengembangan terpisah dengan serangkaian commit-nya sendiri, sehingga pengembang dapat mengerjakan fitur atau perbaikan berbeda secara bersamaan. Branching memfasilitasi kolaborasi, eksperimen, dan organisasi dalam sebuah proyek, karena perubahan yang dibuat di satu branch dapat digabungkan kembali ke basis kode utama setelah selesai dan diuji.
8. Apa itu konflik di Git?
Konflik muncul ketika terjadi perubahan yang saling bertentangan pada bagian yang sama dari suatu file atau beberapa file oleh kontributor berbeda, biasanya selama operasi merge atau rebase. Git tidak dapat menyelesaikan perubahan yang bertentangan ini secara otomatis, sehingga membutuhkan intervensi manual oleh pengguna untuk menyelesaikan ketidaksesuaian.
Untuk menyelesaikan konflik, file yang berkonflik harus ditinjau dan diedit berdasarkan kompromi yang paling tepat sebelum versi yang sudah diselesaikan di-commit.
9. Apa itu merge di Git?
Merge adalah operasi mendasar di Git yang memfasilitasi kolaborasi dan integrasi perubahan lintas branch berbeda dalam sebuah proyek. Secara khusus, merge adalah proses menggabungkan perubahan dari berbagai branch ke dalam 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 dari kedua branch. Anda dapat mempelajari lebih lanjut tentang cara menyelesaikan konflik merge di Git melalui tutorial terpisah kami.
Pertanyaan Wawancara Git Menengah
10. Apa itu remote di Git?
Remote adalah repositori yang dihosting pada server atau komputer lain untuk kolaborasi dan berbagi kode dengan orang lain. Remote berfungsi sebagai lokasi terpusat tempat pengembang dapat mendorong (push) perubahan lokal dan menarik (pull) perubahan yang dibuat orang lain.
Remote biasanya disetel pada platform hosting seperti GitHub, GitLab, atau Bitbucket, dan memungkinkan pengembangan terdistribusi serta memfasilitasi kerja tim dengan menyediakan lokasi bersama untuk menyimpan dan menyinkronkan kode proyek di antara banyak kontributor.
11. Apa perbedaan antara git fetch dan git pull?
Perbedaan utama antara git fetch dan git pull terletak pada apa yang mereka lakukan dan bagaimana mereka memperbarui repositori lokal.
Perintah git fetch mengambil perubahan dari repositori remote ke repositori lokal. Perintah ini memperbarui branch pelacakan-remote (misalnya, origin/master) di repositori lokal untuk mencerminkan keadaan repositori remote, tetapi tidak memperbarui working directory atau menggabungkan perubahan apa pun ke branch saat ini. Artinya setelah fetch, Anda dapat meninjau perubahan di repositori remote tanpa memengaruhi pekerjaan lokal Anda.
Perintah git pull juga mengambil perubahan dari repositori remote, tetapi melangkah lebih jauh dengan mengambil perubahan dan menggabungkannya ke branch saat ini dalam satu langkah. Secara esensial, perintah ini melakukan git fetch diikuti git merge untuk memasukkan perubahan dari repositori remote ke branch saat ini.
12. 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 untuk revert. Anda dapat mengedit pesannya 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, push commit baru ke repositori remote untuk memublikasikan revert menggunakan perintah berikut:
git push origin <branch-name>
Menggunakan git revert membuat commit baru yang membatalkan perubahan yang diperkenalkan oleh commit asli, sehingga membalikkan 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 menarik (pull) perubahan tersebut.
13. Apa yang dilakukan git reset?
Perintah git reset mengatur ulang HEAD saat ini ke keadaan yang ditentukan. Ini berarti perintah tersebut dapat digunakan untuk membatalkan perubahan, menghapus staging file, atau memindahkan penunjuk HEAD ke commit lain. Perhatikan, ada tiga mode utama git reset:
--soft: Mengatur ulang penunjuk HEAD ke commit tertentu, dengan mempertahankan perubahan tetap di-stage. File tetap termodifikasi di working directory, memungkinkan Anda untuk melakukan commit ulang.
--mixed: Mengatur ulang penunjuk HEAD ke commit tertentu, menghapus staging perubahan. File tetap termodifikasi di working directory, tetapi perubahan tidak di-stage untuk commit.
--hard: Mengatur ulang penunjuk 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.
14. Apa itu git stash?
git stash adalah perintah Git yang sementara menyimpan perubahan di working directory yang belum siap untuk di-commit. Ini memungkinkan pengembang menyimpan modifikasi tanpa melakukan commit ke repositori.
Stash berguna saat beralih branch, tetapi Anda tidak ingin melakukan commit atau kehilangan perubahan Anda. Nantinya, Anda dapat menerapkan perubahan yang di-stash ke working directory atau memunculkannya (pop) dari tumpukan stash untuk melanjutkan pengerjaan.
15. Apa itu git reflog?
git reflog adalah perintah Git yang digunakan untuk melihat reference log, yang mencatat perubahan pada penunjuk HEAD dan riwayat commit yang telah di-checkout dalam repositori. Ini menyediakan daftar kronologis tindakan terbaru yang dilakukan di repositori, termasuk commit, checkout, merge, dan reset.
Reflog membantu memulihkan commit atau branch yang hilang dan memahami urutan tindakan yang dilakukan di repositori.
16. 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 Lanjutan
17. Bagaimana Anda mengelola banyak 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 memasukkan pengaturan khusus berdasarkan path repositori.
18. Bagaimana Anda 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.
19. Apa kegunaan git submodule dan bagaimana cara memperbaruinya?
Perintah git submodule mengelola dependensi eksternal dalam sebuah repositori Git. Ini memungkinkan Anda menyertakan repositori eksternal sebagai submodule di dalam repositori utama Anda. Ini berguna ketika Anda ingin menggabungkan kode dari sumber eksternal sambil menjaganya tetap terpisah dari basis kode proyek utama Anda.
Untuk memperbarui submodule di Git, Anda dapat mengikuti 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 Anda memperbarui submodule ke keadaan yang diinginkan, Anda perlu melakukan commit perubahan ke repositori utama untuk mencerminkan keadaan submodule yang diperbarui.
20. Apa pentingnya git push --force-with-lease dibanding git push --force?
git push --force-with-lease adalah pendekatan yang lebih berhati-hati untuk memaksa push perubahan ke repositori remote dibanding git push --force karena mencegah penimpaan perubahan yang dibuat orang lain di repositori remote secara tidak sengaja.
Saat Anda menggunakan git push --force, Anda memaksa push perubahan ke repositori remote tanpa memedulikan 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, mencegah Anda menimpa perubahan pengembang lain secara tidak sengaja.
Mempersiapkan Wawancara Teknis
Menyajikan pengetahuan dan pengalaman Git Anda selama wawancara sangat penting untuk menunjukkan kemahiran Anda dalam pengendalian versi dan kolaborasi dalam tim pengembangan perangkat lunak.
Berikut beberapa tips yang harus Anda ikuti saat mempersiapkan wawancara teknis untuk mengomunikasikan keterampilan Git Anda secara efektif:
Pahami dasar-dasar Git
Pastikan Anda memiliki pemahaman yang kuat tentang dasar-dasar Git, termasuk repositori, branching, merging, commit, dan perintah dasar seperti pull, push, clone, dan commit. Pengetahuan dasar ini akan menjadi landasan diskusi Anda selama wawancara. Akan sangat membantu juga jika Anda memahami secara menyeluruh prinsip-prinsip penting seperti pengendalian versi, membedakan perbedaan antara Git dan sistem pengendalian versi (VCS) alternatif, serta memahami signifikansinya dalam pengembangan perangkat lunak.
Terakhir, kenali berbagai metodologi Git, seperti Git Flow, GitHub Flow, dan GitLab Flow. Nilai kelebihan dan kekurangan tiap pendekatan dan pahami situasi di mana masing-masing paling bermanfaat.
Panduan lengkap DataCamp tentang Git, complete guide to Git, adalah titik awal yang baik untuk membiasakan diri dengan dasar-dasarnya.
Dapatkan pengalaman langsung
Semakin sering Anda menggunakan Git, semakin kuat pengetahuan Anda. Latihan rutin meningkatkan keakraban Anda dengan berbagai perintah dan prosedur. Upayakan memasukkan Git ke dalam alur kerja harian untuk mendapatkan lebih banyak paparan. Pastikan untuk bereksperimen membuat branch, menggabungkannya, dan menyelesaikan konflik.
Jika Anda tidak yakin proyek apa yang 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 termasuk konflik merge, keadaan HEAD terlepas (detached), membatalkan perubahan, dan memulihkan commit yang hilang. Mendiagnosis masalah Git meningkatkan keterampilan pemecahan masalah dan menumbuhkan pemahaman yang lebih dalam tentang mekanisme dasar Git.
Dengan aktif melakukan troubleshooting dan menganalisis pesan kesalahan, Anda akan memperoleh wawasan tentang cara kerja internal Git dan mengembangkan kemahiran dalam mengidentifikasi serta menyelesaikan masalah secara efisien. Pendekatan proaktif ini mengurangi potensi risiko dan secara efektif membangun kepercayaan diri serta keahlian dalam mengelola alur kerja pengendalian versi.
Latih simulasi wawancara
Dengan mengikuti simulasi wawancara, kandidat dapat mengidentifikasi area kelemahan dalam pengetahuan Git dan keterampilan komunikasi mereka, sehingga memungkinkan mereka memfokuskan upaya persiapan secara efektif.
Selain itu, simulasi wawancara menawarkan peluang berharga bagi kandidat untuk menyempurnakan kemampuan pemecahan masalah dengan menangani skenario dan latihan pengkodean terkait Git yang realistis. Latihan langsung ini membantu kandidat membangun kepercayaan diri terhadap keterampilan Git mereka dan meningkatkan kemampuan untuk menyampaikan pemikiran dengan jelas selama wawancara.
Kesimpulan
Git adalah sistem pengendalian versi yang kuat dan banyak digunakan dalam pengembangan perangkat lunak untuk mengelola perubahan kode, berkolaborasi dengan orang lain, dan memelihara riwayat proyek. Keakraban dengan Git sangat penting untuk wawancara teknis karena menunjukkan kemahiran dalam alat dan alur kerja pengembang yang esensial, menyoroti keterampilan kolaborasi, dan menegaskan kemampuan mengelola kode secara efektif dalam lingkungan tim.
Selain itu, memahami konsep dan perintah Git memungkinkan praktik pengendalian versi yang efisien, memastikan integritas kode, keberlanjutan proyek, dan proses pengembangan yang lebih lancar. Dengan demikian, pengetahuan tentang Git sangat berharga bagi calon insinyur perangkat lunak dan pengembang yang menavigasi wawancara teknis dan mengejar karier yang sukses
Untuk pembelajaran lebih lanjut, lihat sumber berikut:

