Git: Alat Version Control yang Wajib Dikuasai di Dunia Kerja

  • 3 min read
  • Agu 13, 2024
Git: Alat Version Control yang Wajib Dikuasai di Dunia Kerja

Git bisa diibaratkan sebagai sahabat setia para pengembang perangkat lunak. Tanpa sadar, Kamu mungkin telah menggunakannya untuk mengelola source code proyek tanpa ribet. Git adalah sistem pengontrol versi (version control) yang telah menjadi tool utama dalam industri teknologi.

Jika diibaratkan, kode sumber adalah alur cerita, Git adalah kamera yang merekam setiap detik atas perubahan yang dilakukan.

Apa itu Git?

Git adalah alat yang memungkinkan kita untuk melacak setiap perubahan dalam kode sumber proyek kita. Pikirkan ini sebagai mengambil snapshot dari proyek Kamu setiap kali Kamu menyimpan perubahan. Sehingga, jika sesuatu berjalan tidak sesuai dengan rencana, Kamu dapat dengan mudah kembali ke momen sebelumnya. Bayangkan mengedit foto dengan opsi “undo” yang tidak pernah habis.

Cara kerja dasar Git

Mari kita ceritakan pengalaman seorang pemula yang pertama kali berinteraksi dengan Git. Bayangkan seorang pengembang baru yang berjalan di hutan kode sumber dan menemukan petunjuk yang menyebutkan “Git”. Ia mengikuti petunjuk tersebut dan menemukan pohon kode sumber yang memiliki banyak cabang. Setiap cabang merepresentasikan perubahan atau percobaan berbeda dalam proyek itu.

Tanpa ragu, ia memutuskan untuk mencoba membuat perubahan pada salah satu cabang. Begitu ia merasa percobaannya berhasil, ia membuat “commit” – yaitu momen di mana ia mengambil snapshot perubahan tersebut. Ketika ia menemui kesalahan di kemudian hari, ia merasa lega karena dengan mudah dapat “checkout” ke commit sebelumnya dan mencoba sesuatu yang berbeda.

Perintah-perintah Dasar Git

Perintah-perintah Git Dasar yang wajib Pengembang tau
1. git status

  • Perintah ini digunakan untuk melihat status dari direktori kerja Git. Ini menampilkan informasi tentang perubahan yang belum di-stage (diatur untuk commit), perubahan yang sudah di-stage untuk commit, dan file yang tidak dilacak oleh Git.
  • Fungsi: Memastikan apa yang sedang terjadi di repositori lokal Anda, seperti perubahan apa yang perlu ditambahkan (add), di-commit, atau di-push.

2. git add .

  • Perintah ini menambahkan semua perubahan yang ada di direktori kerja Anda (termasuk file yang baru) ke dalam staging area untuk siap di-commit.
  • Fungsi: Mengatur seluruh perubahan yang ada dalam direktori untuk siap di-commit. Tanda titik (.) menunjukkan semua file dan perubahan di direktori saat ini.

3. git commit

  • Perintah ini menyimpan snapshot dari file yang di-stage ke dalam riwayat repositori Git, menandakan sebuah titik perubahan yang bisa dikembalikan di kemudian hari.
  • Fungsi: Mengabadikan perubahan yang ada di staging area ke dalam repositori. Biasanya digunakan dengan opsi -m untuk menambahkan pesan yang menjelaskan apa yang di-commit, misalnya git commit -m "pesan commit".

4. git pull

  • Perintah ini mengambil perubahan terbaru dari repositori remote dan menggabungkannya dengan cabang lokal Anda.
  • Fungsi: Mengambil dan menggabungkan (merge) perubahan dari repositori remote ke repositori lokal. Ini adalah gabungan dari dua perintah: git fetch dan git merge.

5. git push

  • Perintah ini mengirimkan commit yang ada di repositori lokal ke repositori remote.
  • Fungsi: Mengirimkan perubahan dari repositori lokal ke repositori remote, misalnya ke GitHub atau GitLab. Biasanya digunakan setelah melakukan commit.

6. git branch

  • Perintah ini digunakan untuk melihat daftar cabang yang ada di repositori lokal, membuat cabang baru, atau menghapus cabang.
  • Fungsi: Menampilkan cabang yang ada saat ini dan memungkinkan pembuatan cabang baru atau pengelolaan cabang yang sudah ada, seperti git branch new-branch untuk membuat cabang baru.

7. git checkout branch

  • Perintah ini digunakan untuk berpindah ke cabang lain yang ada di repositori.
  • Fungsi: Mengubah direktori kerja ke cabang tertentu. Misalnya, git checkout dev-fitur akan mengalihkan Anda ke cabang dev-fitur.

8. git fetch origin dev-fitur:dev-fitur

  • Perintah ini mengambil perubahan dari cabang dev-fitur yang ada di remote origin dan memperbarui cabang dev-fitur di repositori lokal.
  • Fungsi: Mengambil perubahan terbaru dari cabang dev-fitur di remote ke cabang dev-fitur di lokal tanpa menggabungkan perubahan tersebut ke dalam cabang saat ini.

9. git branch --set-upstream-to=dev-fitur dev-fitur

  • Perintah ini mengatur cabang dev-fitur lokal untuk melacak cabang dev-fitur di remote. Ini menghubungkan cabang lokal dengan cabang remote, sehingga operasi seperti git pull dan git push dapat dilakukan tanpa perlu menyebutkan cabang secara eksplisit.
  • Fungsi: Menentukan cabang upstream (remote) yang akan dilacak oleh cabang lokal Anda. Hal ini penting untuk sinkronisasi otomatis dengan cabang di remote.

Mengatasi Konflik dalam Kode Sumber

Namun, tak selalu cerita berjalan mulus. Terkadang, dua orang pengembang berusaha mengubah hal yang sama dalam waktu yang bersamaan, mengakibatkan konflik. Ini mirip dengan dua karakter dalam cerita yang berusaha memenangkan hati sang pahlawan. Tapi tenang saja, Git memiliki alat ajaib yang disebut “merge” untuk memadukan perubahan-perubahan tersebut.

Berkenalan dengan Repo dan Pull Request

Tidak hanya itu, Git juga memberi kita cara untuk berkolaborasi dengan teman-teman kita. Dalam petualangan ini, pengembang pemula belajar tentang repo (repository) yang merupakan wadah untuk menyimpan kode sumber. 

Mereka juga belajar tentang “pull request” yang memungkinkan pengembang untuk mengusulkan perubahan kepada pemilik proyek utama. Bayangkan itu sebagai mengirimkan surat kepada penguasa kerajaan untuk meminta izin memodifikasi tanahnya.

Kesimpulan

Git merupakan perangkat lunak yang bisa diandalkan untuk membantu mengelola kode sumber atau file kerja kita dengan lebih baik. Dari membuat snapshot hingga mengatasi konflik, menurut saya Git adalah alat yang wajib digunakan oleh setiap pengembang software ataupun profesional worker.

Jadi, mari kita terus menjelajahi kode sumber bersama Git, menemukan cabang-cabang baru, menggabungkan perubahan, dan melakukan setiap commit dengan disiplin!