[Git] Apa itu Git?

Apa itu Git? (Gambaran Umum)

Apakah kalian pernah mendengar Git? Git adalah sebuah distributed control version yang bersifat open source. Distributed version control system, apalagi itu? Okay, sebelum menjelaskan tentang distributed version control system, akan saya jelaskan terlebih dahulu tentang version control system. Version control system. Version control system (VCS) adalah sebuah sistem yang mempermudah pengembangan aplikasi secara kolaboratif, yang memcatat setiap perubahan (versi) yang dilakukan oleh pengguna (atau setiap pengguna) tanpa kehilangan catatan tentang versi yang sebelumnya, sehingga suatu saat pengguna dapat kembali ke versi sebelumnya kapan saja tanpa kehilangan perubahan pada versi terbaru. [referensi] Bahasa awamnya pengguna tidak perlu lagi menyalin file untuk setiap perubahan yang dia lakukan, kayak anak kuliah lagi skripsi, skripsi_rev1, skripsi_rev2,  ..., skripsi_final. Dengan menggunakan version control, setiap perubahan yang dilakukan di sebuah server/database.

Sejarah Singkat VCS

Local VCS : Cara paling sederhana yang dilakukan orang-orang untuk melakukan version-control adalah seperti yang saya sebutkan pada contoh diatas, meng-copy file pada direktori. Masalahnya, jika pengguna lupa dia terakhir meng-copy file yang mana dan di direktori mana, maka semuanya jadi kacau. Hal ini lah yang melatar-belakangi dibuatnya Local VCS yang memiliki database sederhana untuk menyimpan perubahan pada file-file dibawah pantuan revision-control. (contoh: RCS)

Centralized VCS: Local VCS memiliki kelemahan yang utama yaitu tidak bisa dipakai jika pengguna ingin berkolaborasi dengna pengguna lain. Karena itu dibuatlah Centralized VCS (CVCS), yang memiliki sebuah server tunggal untuk menyimpan seluruh data perubahan pada file-file yang dikerjakan. CVCS menjadi standar bagi version-control untuk jangka waktu yang cukup lama karena keunggulan yang dimilikinya atas Local VCS sangat signifikan. Pengguna lain dapat melihat apa yang telah dikerjakan oleh pengguna lain, admin dapat menentukan peranan masing-masing pengguna pada file tertentu, dll. (contoh: CVS, Subversion dan Perforce)

Distributed VCS: Semua keunggulan CVCS tidak bisa menutupi satu kekurangan yang cukup riskan, yaitu apabila server CVCS sedang down atau maintenance pengguna tidak bisa bekerja sama sekali, jika hard disk di server menjadi corrupt dan tidak ada back up nya yang maka semua akan hilang. Disinilah Distributed VCS (DVCS) masuk dengan menawarkan keunggulan atas CVCS, jika salah satu server down atau hard disk-nya corrupt, server lain yang di-mirror-kan dapat me-restore semua file kembali. DVCS juga memungkinkan para pengguna untuk berkolaborasi pada lebih dari satu repo. Hal ini tidak dapat dilakukan pada CVCS yang menganut sistem hirarkial. (contoh: Git, Mercurial, Bazaar dan Darcs)

Sejarah Singkat Git

Git adalah DVCS dari Linux yang dibuat pada tahun 2005. Awalnya komunitas pengembang Linux mendistribusikan setiap perubahan pada software Linux sebagai patch dan archived files (1991-2002), kemudian pada tahun 2002 mereka menggunakan DVCS dari perusahaan bernama BitKeeper untuk digunakan pada proyek Linux, sehingga seluruh kolaborator proyek Linux dapat dengan mudah berinteraksi dan mengerjakan proyek ini. Tetapi, pada tahun 2005 hubungan antara komunitas pengembang Linux dengan BitKeeper merenggang, dan status BitKeeper yang gratis untuk digunakan di Linux dihilangkan. Akibatnya para pengembang Linux harus membuat sebuah DVCS yang menyerupai DVCS milik BitKeeper agar tidak terlalu banyak melakukan penyesuaian lagi pada proyek Linux. Git dibuat dengan kriteria awal mengutamakan kecepatan, desain yang sederhana, mendukung pengembangan non-linear (dapat memiliki banyak branch), sepenuhnya terdistribusi dan harus bisa menangani proyek-proyek besar secara efisien. Seiring perkembangan waktu, sampai hari ini kita dapat lihat Git menjadi salah satu DVCS yang paling banyak digunakan. Selain untuk Linux, Git juga tersedia untuk Windows dan Mac OS.

Istilah Umum [referensi]

Repository (Repo): database yang menyimpan history/ riwayat perubahan

Working folder: folder berisi file dan folder tempat kita bekerja. Biasanya working folder berisi banyak file source code untuk aplikasi yang sedang kita buat. Git memantau working folder ini, dan bisa mengetahui file dan folder mana yang sudah berbeda dari posisi commit terakhir. Perbedaan atau perubahan ini bisa disimpan menjadi commit baru, atau dikembalikan ke kondisi sebelum diubah.

Snapshot: potret kondisi file dan folder pada saat tertentu

Commit: snapshot yang disimpan di repository

Master: nama branch default yang diberikan git pada waktu kita membuat repository. Branch master ini
tidak istimewa. Dia bisa dihapus dan direname sesuka hati.

Branch: serangkaian commit yang berkaitan sehingga kalau digambar seperti garis lurus berisi banyak
commit. Satu repository bisa berisi banyak branch.

head: ujung branch, commit terbaru di dalam branch

HEAD: head yang sedang aktif. Walaupun satu repository bisa memiliki banyak branch, tapi cuma satu yang aktif.

Stage Area: snapshot dari working folder yang akan kita simpan pada saat commit. Ini adalah fitur unik Git yang tidak dimiliki version control lain. Dengan adanya staging area, kita bisa memilih perubahan mana yang akan di-commit dan mana yang tidak.

Object Store: ini adalah database tempat semua commit disimpan.

Git Basic Command Line

  • $git add <filename> : untuk menambahkan file ke git
  • $git rm <filename>: untuk menghapus file ke git
  • $git commit atau $git commit -m "<catatan perubahan pada versi yang mau di-commit>" : untuk melakukan pencatatan tentang perubahan yang dilakukan pada versi yang sedang berjalan
  • $git push : untuk menyimpan data dari local git ke repo di remote git
  • $git pull : untuk mengambil data dari repo di remote git ke local git, agar local git tetap terupdate. Hal ini akan banyak dipakai jika mengembangkan aplikasi dalam sebuah tim
  • $git clone <alamat dan nama repo di git hosting> : untuk mengunduh seluruh file di sebuah repo

 

Share this post to the world:
Facebooktwittergoogle_pluspinterestlinkedinFacebooktwittergoogle_pluspinterestlinkedin

Leave a Reply

Your email address will not be published. Required fields are marked *