Standarisasi GIT Digital Amoeba


‎‎‏‏‎ ‎

Apa itu Version Control Sistem dan GIT?

Version Control System (VCS) adalah sistem penyimpanan yang mencatat perubahan yang dapat dipanggil kembali pada versi yang diinginkan. VCS dapat memudahkan kita untuk menelusuri sejarah perubahan kode serta memahami alasan mengapa kode-kode tersebut diubah. Hal ini tentunya sangat membantu para developer untuk mengembangkan suatu aplikasi khususnya pada proyek yang dikerjakan secara bersamaan dalam tim.

Git merupakan salah satu VCS yang populer di dunia Software Engineering saat ini. Salah satu perbedaan antara Git dengan VCS lainnya adalah caranya memperlakukan data. VCS lain memperlakukan informasi yang disimpannya sebagai sekumpulan berkas dan perubahannya yang terjadi. Di sisi lain, Git memperlakukan data sebagai sebuah kumpulan snapshot dari sebuah miniatur sistem berkas. Setiap kali dilakukan commit, Git merekam gambaran keadaan berkas-berkas anda pada saat itu dan menyimpan referensi untuk gambaran tersebut. Ilustrasi snapshot dapat dilihat pada gambar di bawah ini.

‎‎‏‏‎ ‎

Gimana sih GIT itu bekerja ?

Git akan memantau semua perubahan yang terjadi pada file project dan menyimpannya ke dalam database.

Saat kita ingin menyimpan semua perubahan pada file, biasanya kita membuat file baru dengan “save as”. Lalu, file akan menumpuk dalam direktori proyek seperti pada ilustrasi di sebelah kanan.

Dengan adanya Git, hanya akan ada satu file dalam project dan perubahannya disimpan dalam database. Git hanya akan menyimpan data perubahannya saja, tidak menyimpan seluruh isi file yang akan memakan banyak memori.

Selain itu, Git memungkinkan kita kembali ke versi yang kita inginkan.

‎‎‏‏‎ ‎

Keuntungan menggunakan GIT

  • Penyimpanan yang berbasis file (tidak menggunakan database/SQL).
  • Gratis atau Open Source.
  • Visual Control System yang terdistribusi.
  • Mendukung dalam proyek besar seperti kernel Linux.
  • Akses yang hanya menggunakan command line tanpa menggunakan client-server.
  • Tampilan aplikasi yang mudah dipahami untuk pengguna baru.

‎‎‏‏‎ ‎

Repository Hosting Manager Tools untuk GIT

GITHUB, GITLAB, & BITBUCKET merupakan layanan cloud hosting yang bertugas menyimpan dan mengelola repository GIT tersebut.

‎‎‏‏‎ ‎

Perbedaan Gitlab, Github dan Bitbucket

Fitur Github

Fungsionalitas utama GitHub adalah percabangan dan forking repositori, permintaan tarik dan penggabungan, kloning basis kode. Fungsi utama bekerja dengan cepat – mungkin, yang tercepat di antara ketiganya. Pengembang dapat dengan cepat mengunggah file ke repositori jarak jauh dan menerima pemberitahuan langsung dari kontributor lain.

GitHub juga memiliki dukungan wiki – alat bawaan untuk membuat dan berbagi dokumentasi versi. Layanan ini mendukung beberapa format teks, termasuk penurunan harga .

Fungsionalitas tambahan : 

  • Issue tracker yang mendeteksi masalah dalam basis kode dan memberi tahu kolaborator;
  • Papan masalah mendukung Kanban dan Scrum dan memungkinkan penataan tugas;
  • GitHub mendukung epik yang memungkinkan pelacakan kemajuan tim;
  • Peta jalan membantu merencanakan proyek tim dan menunjukkan tonggak penting;
  • Estimasi dan poin: pengembang dapat memperkirakan poin upaya untuk setiap masalah dan berbagi detail dengan kolaborator;
  • Menyinkronkan versi gabungan, masalah GitHub, dan permintaan penarikan;
  • Aplikasi desktop untuk Windows dan Mac, serta aplikasi seluler untuk Android
  • Dukungan dari 200+ bahasa pemrograman
  • Integrasi dengan Asana, AWS, Windows Azure, Google Cloud , Code Climate
  • Halaman GitHub adalah layanan bawaan untuk membangun dan menghosting situs dengan GitHub.
  • Penyorotan sintaks (tidak ada di BitBucket)
  • Komunitas open-source populer

Fitur Gitlab

Popularitas GitLab tumbuh karena peningkatan adopsi CI / CD dan DevOps . Repositori kode lain menawarkan fitur CI dalam versi premiumnya, tetapi di GitLab, dukungan CI disertakan dalam paket gratis. Selain itu, pengembang dapat menghosting integrasi CI GitLab di server mereka.

Fungsionalitas tambahan

  • Subkelompok, manajemen kepatuhan, dan acara audit: GitLab memungkinkan pembatasan akses ke proyek dan melihat status kepatuhan setiap peserta;
  • Perencanaan proyek: pengembang melacak masalah kode dengan daftar tugas bawaan, templat deskripsi, dan panel manajemen masalah;
  • Komunikasi: pengembang dapat bertukar file terlampir, membuat utas dan berpartisipasi di dalamnya, melacak perubahan, memprioritaskan diskusi dengan label, menetapkan pencapaian, dan menyelesaikan iterasi;
  • Manajemen kode sumber: GitLab dihargai karena antarmukanya yang intuitif untuk percabangan, penggabungan, penguncian file, pelaporan. GitLab juga menawarkan templat kode sumber gratis dan integrasi JIRA;
  • Integrasi berkelanjutan: nilai jual utama platform ini adalah alat CI gratis, termasuk pipeline induk-anak, penskalaan otomatis horizontal, visualisasi artefak HTML dan variabel yang dilindungi, dll .;
  • Pembuatan paket: pengembang dapat menggunakan paket terpisah tergantung pada tumpukan teknologi mereka – ada paket untuk PHP, Node.js, Java, dan lainnya;
  • Keamanan: GitLab menyediakan pemindaian keamanan, memungkinkan pengujian keamanan dinamis (namun, hanya dalam paket Gold dan Ultimate yang paling mahal);
  • Konfigurasi dan DevOps: fitur Auto DevOps tersedia dalam paket gratis, sedangkan add-on khusus hanya didukung oleh paket Gold dan Ultimate.

Fitur Bitbucket

Fitur utama BitBucket

BitBucket memungkinkan pengembang untuk menghosting kode di repositori pribadi dan publik. Pengguna dapat membuat repositori pribadi dalam jumlah tidak terbatas – selama tidak lebih dari 5 pengguna menggunakannya. Perbedaan utama dari platform ini adalah integrasinya dengan Jira dan Asana. Sejak Atlassian mengakuisisi BitBucket, itu telah menjadi komponen asli dari ekosistem mereka.

Hasilnya, pengembang dapat dengan mudah memantau aktivitas BitBucket di Jira, mengukur produktivitas mereka, dan menghubungkan dewan organisasi ke repositori kolaboratif. Ini nyaman karena manajer proyek dapat dengan mudah melacak aspek organisasi dan teknologi proyek.

Fungsionalitas tambahan : 

  • Pipelines adalah layanan CI / CD yang menampilkan seluruh siklus hidup pengembangan produk. Di BitBucket, pengembang dapat melacak kemajuan penerapan perangkat lunak.
  • Izin cabang: pengembang dapat mengizinkan orang tertentu mengakses ke repositori;
  • Integrasi dengan Slack, Bamboo, Jenkins, HipChat, Crucible, dan alat lainnya;
  • Klien Mac dan Windows, dan aplikasi Android, yang disebut Bit Beaker;
  • BitBucket Snippets: pembuatan cuplikan untuk basis kode;
  • Dokumentasi dan wiki;
  • Panel pencarian untuk navigasi basis kode;
  • Banyak add-on di pasar Atlassian, yang sebagian besar dapat dengan mudah diintegrasikan ke dalam seluruh ekosistem.

GIT CORPU merupakan layanan GITLAB yang tersimpan pada cloud internal yang berguna untuk menyimpan dan mengelola project yang ada pada Telkom CorpU.

‎‎‏‏‎ ‎

Extension Git Graph dan GitLens di VSCode

Kita bisa menginstall dua extension yakni Git Graph dan GitLens untuk mempermudah kita dalam melakukan manajemen Git.

Git Graph

Link Extension: https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph

Git Graph berfungsi untuk menampilkan git log dengan lebih interaktif dan mudah untuk dimengerti. Extension ini sangat berguna dan tergolong ringan dan merupakan extension yang wajib digunakan oleh software developer yang ingin berkolaborasi dan menjadi lebih efisien menggunakan Git.

Git Graph mempermudah developer untuk melompat antar commit dan branch untuk melakukan Create, Checkout, Delete, Fetch, Merge, Pull, Push, Rebase, Rename & Reset Branches. Terdapat banyak fitur lainnya yang bisa diexplore oleh para software developer untuk menyesuaikan dengan keperluan masing-masing.

GitLens

Link Extension: https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens

GitLens merupakan extension open-source yang menambahkan lagi pengalaman software developer dalam menggunakan Git di VSCode. Extension ini lebih berat dari Git Graph namun memiliki lebih banyak fitur, maka dari itu bersifat opsional untuk diinstall dibandingkan dengan Git Graph. GitLens juga memiliki beberapa fitur yang berbayar yang sangat membantu bagi software developer.

Salah satu fitur yang sangat membantu dari GitLens adalah fitur Inline and Status Bar Blame, dimana kita bisa mengetahui siapa saja yang melakukan perubahan kode di setiap baris codebase.

Kita kemudiannya bisa mengarahkan mouse ke baris tersebut untuk melihat siapa yang merubah kodingan tersebut, bagaimana wujud kodingan tersebut sebelumnya, commit dan merge request kodingan tersebut, dan lain-lain.

Terdapat banyak fitur lainnya dari extension ini yang bisa dicek langsung di link marketplace yang disediakan di atas.

‎‎‏‏‎ ‎

Buat Repository baru di GIT

Please go to gitlab.com

Dibawah ini adalah tampilan ketika baru masuk ke dalam Gitlab Digital Amoeba :

  • Menu Login

  • Menu Register

*Note: Jangan menggunakan login Google Account

Berikut adalah langkah-langkah untuk membuat sebuah Repository baru di Gitlab Digital Amoeba :

  1. Create a Project

2. Pilih “Create Blank Project”

Setelah mengklik blank project ada beberapa settingan yang direkomendasikan untuk digunakan : 

  • Isi project name yang sesuai dan project description bila diperlukan.
  • Pastikan Visibility Level = Private.
  • Uncheck “Initialize repository with a README”

3. Setting Git

Kita perlu menyesuaikan username global kita ke dalam repository yang akan digunakan : 

  • Masuk ke folder tujuan
  • Buka terminal GIT BASH (Klik kanan, klik “GIT Bash Here..”)
    • Note: Kita juga bisa menggunakan terminal apapun seperti command prompt atau terminal selagi git sudah terinstall.
  • Masukkan command “git init –initial-branch=main” terlebih dahulu
  • Kemudian, lakukan command di bawah ini :

*sesuaikan dengan yang ada di repository masing-masing.

*flag –global berfungsi jika user.name dan user.email ingin digunakan di setiap project.

*jangan gunakan flag –global jika suatu project perlu menggunakan user.name dan user.email khusus project tersebut.

  • Ini adalah contoh ketika kita sudah melakukan config untuk username dan emailnya
  • Kita juga bisa melakukan config untuk username dan email menggunakan extension Git Graph. Buka tab Git Graph dari tombol yang ada di bawah
  • Kemudian tekan tombol “gear” yang ada di pojok kanan atas.
  • Cari baris “User Details”. Di sini, kita bisa mengedit user name dan user email git project tersebut. (note: pengeditan user name dan user email dengan cara ini bersifat local dan tidak global)

4. Push code

Setelah kita mengkonfigurasi username dan juga email, kita perlu melakukan initial commit terlebih dahulu 

  • Untuk melakukan push terhadap folder yang sudah ada, lakukan command (Push an existing folder) :

*jika pada terminal sudah masuk di folder tujuan dan sudah melakukan git init, langsung mulai di baris 3

*sesuaikan dengan yang ada di repository masing-masing.

  • Berikut adalah contoh ketika kita sudah melakukan initial commit kedalam  repository kita

‎‎‏‏‎ ‎

Branching Method : Menggunakan metode Feature Branch

Feature branch dan bagaimana cara kerjanya

Setiap melakukan development fitur baru atau melakukan bug fixing, code tersebut akan ditempatkan pada branch khusus, tidak di main atau develop atau deploy branch untuk lebih lengkapnya dapat dilihat pada tabel dibawah :

Dapat dilihat di atas terdapat beberapa branch yang juga memiliki fungsi dan tugasnya masing-masing mulai dari development, dev-user sampai branch hotfix. Khusus untuk branch master dan development akan di set secara Blocked sehingga kita tidak bisa push/mengedit manual oleh developer secara langsung dan hanya bisa melalui merge request. Ketika melakukan merge request dan terdapat konflik di dalamnya kita dapat me resolve konfliknya di dalam git repository oleh admin atau secara local oleh developer.

Bagaimana cara membuat branch baru?

  • Buat branch baru yang mengacu pada main branch

Terdapat 2 cara yaitu :

Dan

Untuk struktur branch nya adalah

  • Update, Add & Commit Changes

  • Update, Add & Commit Changes
  1. Push branch yang baru dibuat tadi kedalam central repository
  2. Next push pake command push yang biasa

  • Pull request & Merge Request
  1. Biasakan sebelum melakukan merge request kita pull dulu ke main repository agar mengecilkan peluang terjadinya conflict

2. Kemudian jangan lupa untuk commit dan push kembali ke branch nya

3. Melakukan merge request pada GUI GIT kemudian di review dan approve oleh approver-nya

4. Dalam melakukan merge request kita dapat menambahkan deskripsi di dalamnya mengenai what, why dan how sehingga memudahkan maintainer dengan melihat scope yang lebih jelas

5. What berisi apa yang kita kerjakan, why berisi mengapa kita mengerjakan itu dan apa yang berubah, how berisi bagaimana cara kita mengubahnya

  • GIT Rebase

git rebase adalah perintah yang memungkinkan pengguna Git untuk memodifikasi basis satu cabang menjadi komit. Selain itu, ia menulis ulang riwayat komit cabang dengan memindahkan seluruh cabang ke titik awal yang baru. Ini berguna untuk memasukkan modifikasi dari cabang lain, membersihkan riwayat komit, dan menyelesaikan konflik.

Kalau di perhatikan, rebase hanya mengambil commit dari branch lain.

Dalam hal ini branch master mengambil 2 commit dari branch develop.

Perhatikan juga bahwa ketika menggunakan rebase maka tidak akan membuat commit baru.

Keunggulan rebase :

  1. Mebuat history repository yang lebih bersih
  2. Memudahkan untuk membaca grafik commit

Kekurangan :

  1. Sulit diperbaiki jika terjadi konflik

  • Git Stash

Selain working area, staging dan repository, Git memiliki area yang disebut stash di mana kita dapat menyimpan sementara perubahan yang kita buat tanpa melakukan commit ke repository.

Ini berguna dalam situasi kita sedang melakukan perubahan pada kode, dan belum siap untuk melakukan commit, namun kita perlu berpindah ke branch lain

  • Stash Perubahan

Untuk menyimpan perubahan kita ke stash, gunakan perintah

git stash save "pesan stash"

Perintah tersebut akan menyimpan perubahan dan mengembalikan (revert) working directory ke posisi commit terakhir. Perubahan yang tersimpan di stash dapat diakses dari branch manapun dalam satu repository.

  • Melihat Perubahan dalam Stash

Untuk melihat perubahan yang tersimpan dalam stash, gunakan perintah

git stash list

Perintah di atas akan mengembalikan daftar stash yang tersimpan dalam format

stash@{0}: NAMA-BRANCH: PESAN

stash@{0} adalah nama dari stash, nomor dalam kurung {0} adalah index dari stash. Nama dan index tersebut digunakan untuk memilih stash yang akan kita terapkan.

  • Mengambil Perubahan dalam Stash

Untuk mengambil perubahan yang tersimpan di dalam stash ke branch yang sedang aktif, gunakan perintah berikut

# terapkan perubahan dari stash ke branch aktif

git stash apply NAMA-STASH

# terapkan perubahan dan hapus file dari stash

git stash pop NAMA-STASH

Ketika menerapkan perubahan dari stash ada kemungkinan terjadi konflik, untuk menyelesaikannya sama seperti dalam kasus konflik merge.

  • Menghapus Perubahan dalam Stash

Untuk menghapus perubahan dari daftar stash, jika kita sudah tidak lagi membutuhkannya, gunakan perintah berikut:

# menghapus stash yang dipilih

git stash drop NAMA-STASH

# menghapus semua stash

git stash clear

  • Merge Conflict

Karena topik Merge Conflict merupakan suatu topik yang cukup kompleks dan terkadang membingungkan, kami telah membuat artikel terpisah di docs.digitalamoeba yang membahas dengan lebih detail dan mendalam tentang cara menyelesaikan merge conflict dengan efisien menggunakan VSCode. Berikut adalah artikel untuk merge conflict tersebut:

https://docs.digitalamoeba.id/technology/resolving-merge-conflicts-in-vscode

‎‎‏‏‎ ‎

Basic Operations on GIT CLI

Flow

Kita akan mempelajari flow dari version control system GIT. Berikut merupakan perintah-perintah yang paling sering digunakan dalam sebuah flow git.

Clone

git clone repo-url

Perintah ini digunakan untuk menyalin remote repository ke dalam direktori local.

Init

git init

Perintah ini digunakan untuk membuat repository baru pada direktori local.

Add

git add .

Perintah ini digunakan untuk menambahkan perubahan file pada direktori lokal ke staging area.

Bisa menggunakan command “git add .” untuk menambahkan semua file ke staging area.

Commit

git commit -m "message"

Perintah ini digunakan untuk melakukan commit pada perubahan yang sudah di staging ke head. Perubahan yang di-commit belum langsung digabung ke remote repository.

*command ini dijalankan setelah melakukan staging atau “git add .”

Push

git push origin nama-branch

Perintah ini digunakan untuk menggabungkan perubahan pada direktori local kalian ke remote repository.

*command ini dijalankan setelah melakukan commit atau “git commit -m “message””

Pull

git pull origin nama-branch

Perintah ini digunakan untuk menarik / menggabungkan perubahan pada remote repository ke direktori local kalian.

*command ini biasanya dijalankan sebelum melakukan perubahan pada direktori local atau sebelum melakukan push (setelah melakukan commit), agar keep updated dan juga menghindari conflict pada saat proses merge.

Checkout

git checkout -b nama-branch

Perintah ini digunakan untuk membuat branch baru dan berpindah ke branch baru tersebut.

git checkout nama-branch

Perintah ini digunakan untuk berpindah ke branch lain.

Status

git status

Perintah ini digunakan untuk mengetahui status pada file yang berubah beserta file yang ingin di-staging maupun di-commit.

‎‎‏‏‎ ‎

Use GIT with Source Control in VSCode

Make changes & Save changes

Go to Source Control & Click modified file

View Working Tree of modified file & Stage changes

Unstage changes or Commit changes

Push or Publish Branch

‎‎‏‏‎ ‎

Commit Naming Conventions

Terdapat banyak commit naming conventions yang biasa digunakan dan hal tersebut tergantung pada kebijakan dan kesepakatan setiap proyek dan tim yang berbeda. Maka dari itu, kami menyarankan agar berdiskusi bersama anggota tim developer untuk menentukan naming convention yang cocok untuk tim dan proyek masing-masing. Berikut merupakan salah satu contoh commit naming convention yang bisa digunakan: https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13

  • API relevant changes
    • feat Commit yang menambahkan atau menghapus fitur baru
    • fix Commit yang memperbaiki bug
  • refactor Commit yang menulis kembali/restruktur kode Anda, namun tidak mengubah perilaku API
  • perf Commit yang merupakan refactor khusus yang meningkatkan kinerja
  • style Commit yang tidak mempengaruhi makna (spasi putih, pemformatan, titik koma yang hilang, dll)
  • test Commit yang menambahkan tes yang hilang atau memperbaiki tes yang ada
  • docs Commit yang hanya mempengaruhi dokumentasi saja
  • build Commit yang mempengaruhi komponen pembangunan seperti alat pembangunan, pipeline CI, dependensi, versi proyek
  • ops Commit yang memengaruhi komponen operasional seperti infrastruktur, implementasi, pencadangan 
  • chore Commit lain-lain seperti memodifikasi .gitignore
Contoh

feat: add email notifications on new direct messages

feat(shopping cart): add the amazing button

feat!: remove ticket list endpoint

refers to JIRA-1337c
BREAKING CHANGES: ticket endpoints no longer supports list all entities.

fix(api): handle empty message in request body

fix(api): fix wrong calculation of request body checksum

fix: add missing parameter to service call

The error occurred because of <reasons>.

build(release): `bump version to 1.0.0

build: update dependencies

build(release): `bump version to 1.0.0

refactor: implement fibonacci number calculation as recursion

style: remove empty line

‎‎‏‏‎ ‎

Kelebihan dan Kelemahan menggunakan GUI

Kelebihan
  • Desain yang Menarik

Salah satu kelebihan terbesar GUI adalah kemampuannya untuk membuat tampilan yang menarik secara visual. GUI dapat memanfaatkan berbagai elemen desain seperti warna, gambar, animasi, tipografi untuk membuat pengalaman pengguna lebih menyenangkan.

Dengan desain GUI yang matang, pengguna akan lebih tertarik dan nyaman berinteraksi dengan sistem. GUI juga membantu membangun branding suatu produk melalui tampilan khas yang dapat dikenali pengguna.

  • Memudahkan Interaksi Pengguna dan Komputer

Seperti sudah disebutkan sebelumnya, GUI sangat memudahkan interaksi antara pengguna dengan komputer. Pengguna cukup mengklik, menscroll, atau mendrag elemen visual untuk melakukan perintah, tanpa perlu mengetikkan syntax yang rumit.

Hal ini membuat komputer jauh lebih mudah digunakan oleh siapa saja, bahkan pengguna awam sekalipun. GUI membuka aksesibilitas komputer untuk kalangan yang lebih luas.

  • Mudah Digunakan

Berkat tampilan visual dan interaksinya yang intuitif, GUI sangat mudah untuk digunakan pengguna. Pengguna, terutama pengguna baru, akan lebih cepat memahami cara mengoperasikan sistem ber-GUI dibandingkan CLI.

GUI menyembunyikan kerumitan sistem di balik antarmuka visual yang familiar bagi pengguna. Ikon, menu, dan jendela membuat navigasi sistem menjadi sangat sederhana. Pengguna tidak perlu menghafal banyak perintah.

  • User Friendly

GUI didesain agar bersahabat dengan penggunanya (user friendly). Tampilan dan interaksinya dibuat semudah mungkin untuk memastikan pengguna nyaman menggunakan sistem.

GUI membantu mengurangi tingkat frustrasi dan kebingungan pengguna saat mengoperasikan sistem. Pengguna juga didukung melalui feedback visual seperti tooltip, cursor change, dan animasi untuk membimbing interaksi.

  • Tampilan yang Sederhana

GUI menciptakan abstraksi yang menyembunyikan kerumitan sistem di balik tampilan sederhana yang mudah dicerna pengguna. Pengguna tidak perlu pusing memikirkan proses yang terjadi di balik layar.

Misalnya, pengguna cukup mengklik icon printer untuk mencetak, tanpa perlu tahu proses rendering dan pengiriman data ke printer yang kompleks. Tampilan sederhana ini membuat GUI sangat intuitif digunakan.

Kekurangan
  • Membutuhkan spesifikasi hardware yang lebih besar dan mumpuni

Karena kebanyakan menggunakan grafis, antarmuka GUI tentu harus memerlukan spesifikasi hardware yang mendukung. Jika tidak, pasti akan ada masalah yang akan muncul.

  • Performa lebih berat

Membuka program atau aplikasi tentu membutuhkan source memori yang banyak. Selain itu, performa lainnya juga harus dibutuhkan untuk memenuhi berbagai perintah yang dijalankan. Jika memori laptop atau komputer memiliki kapasitas memori yang terbatas maka bisa saja lemot atau ngehang.

  • Biasanya berbayar

Semakin bagus fitur yang ditawarkan system operasi, semakin berpeluang juga untuk menghasilkan pundi-pundi uang. Bukan hanya itu, diperlukan juga perawatan dan pembaruan yang lebih mendalam untuk memberikan kenyamanan para penggunanya. Karena hal inilah banyak dari antarmuka GUI yang menerapkan lisensi pada produk yang dibuatnya. Contoh system operasi yang menggunakan antarmuka GUI berbayar adalah Windows dan Mac OS (Macintosh).

‎‎‏‏‎ ‎

Kelebihan dan Kelemahan menggunakan CLI

Kelebihan
  • Efisiensi, ringan dan cepat. 

Bagi yang sudah ahli dan familiar dengan kode-kode, antarmuka CLI mungkin tidak akan menjadi masalah. Bahkan bagi mereka yang sudah ahli, mungkin CLI adalah pilihan yang terbaik. Selain lebih efisien, ringan dan cepat, antarmuka CLI juga biasanya lebih mudah untuk membuat/membobol konfigurasi keamanan. Berbagai hak akses keamanan mungkin bisa lebih mudah didapat dengan menggunakan antarmuka CLI. Contoh saja untuk melihat isi folder, kita hanya perlu mengetikkan perintah ls, untuk hapus perintah rm. Mudah sekali bukan?

  • Mudah dalam membuat folder dan sub folder.

 Membuat beberapa folder pada antarmuka CLI sangat mudah, cukup mengetik perintah mkdir maka folder baru sudah dibuat. Meski GUI juga cepat dalam membuat folder, namun dalam antarmuka CLI lebih cepat dalam hal ini.

  • Performa stabil

Karena hanya menggunakan text, antarmuka system operasi ini terlihat lebih stabil dibanding GUI. Hal ini tentu tidak akan memengaruhi aktivitas karena tidak memakan resource memory yang terlalu banyak. Banyak juga perusahaan yang lebih suka membangun server jaringan dengan menggunakan CLI karena tingkat stabilnya, misalnya Debian Server.

  • Biasanya gratis

Mayoritas antarmuka CLI bersifat gratis dalam penggunaannya. Hal ini bisa jadi karena rata-rata antarmuka CLI menggunakan system operasi berbasis open source. Contoh system operasi yang menggunakan CLI gratis adalah Ubuntu, Debian, FREBSD, KaliLinux, dan lain sebagainya.

  • Hanya memerlukan spesifikasi hardware yang rendah, tidak muluk-muluk

Hal ini dikarenakan antarmuka CLI hanya menggunakan perintah text, tanpa menggunakan grafis berat sama sekali.

  • Jarang terkena virus

Selain beberapa kelebihan yang sudah dijelaskan sebelumnya, antarmuka CLI juga mungkin jarang terkena virus atau malware. Apalagi jika sistem operasinya berasal dari Linux yang umumnya sangat jarang diserang virus bandel.

Kekurangan
  • Bagi pengguna awam, terkesan tidak menarik dan sangat membosankan

Bayangkan saja, kamu melihat layar tanpa adanya gambar atau visual apa pun. Hanya ada background hitam dan text yang berwarna putih. Apa yang kamu rasakan pertama kali? Kalau saya sendiri sih sudah tentu sangat bosan melihatnya.

  • Harus menghafal/mengerti berbagai kode baris dan perintah

Selain tampilan yang gitu-gitu saja, kamu juga harus mengingat berbagai baris untuk menjalankan suatu perintah. Ini tentu menjadi sangat ribet apabila kamu menginginkan sesuatu yang instant dan praktis. Misalnya kamu ingin internetan melalui antarmuka CLI, kamu harus terlebih dahulu membuat konfigurasi tertentu agar kamu bisa terkoneksi dengan internet. Jika kamu masih pemula, hal ini tentu menjadi sangat sulit dan ribet, bahkan mungkin saja konfigurasimu salah dan harus dicek satu per satu.

  • Salah Perintah Bisa Fatal

Biasanya antarmuka CLI tidak terlalu banyak menanyakan hal, karena semuanya mungkin serba simpel. Antarmuka ini secara otomatis akan menjalankan berbagai perintah yang dimasukkan. Misalnya saat membuat server jaringan dan ternyata ada beberapa perintah yang belum diinterupsikan, maka kemungkinan jaringan akan gagal dibuat. Perlu pengecekan mendalam di setiap baris perintah yang dijalankan. Bagi yang belum terlalu mahir, cara ini mungkin tampak ribet dan sangat membingungkan.

  • Risiko Kehilangan File Lebih Besar

Saking cepatnya menggunakan baris kode, mungkin saja kita tanpa sengaja melakukan kesalahan. Misalnya saat ingin menghapus file dengan rm, kita tentu harus mencari lokasi file atau targetnya dengan benar. Jika tujuannya salah karena keteledoran kita, maka file itu bisa langsung terhapus. Ini tentu memiliki risiko yang lebih besar, apalagi jika file tersebut penting.

‎‎‏‏‎ ‎

Kesimpulan

Git adalah sistem kontrol versi yang populer dalam pengembangan perangkat lunak, memungkinkan pengembang untuk melacak perubahan pada file proyek dan berkolaborasi dalam tim. Dengan kemampuannya menyimpan perubahan hanya dalam database, Git menawarkan efisiensi penyimpanan dan memudahkan untuk kembali ke versi sebelumnya. Keuntungan menggunakan Git termasuk penyimpanan berbasis file, gratis atau open source, serta dukungan untuk proyek besar dan berbagai layanan hosting. Selain itu, perbedaan antara platform hosting seperti GitHub, GitLab, dan Bitbucket terletak pada fitur tambahan yang mereka tawarkan. Dalam penggunaannya, antarmuka command line (CLI) menyediakan efisiensi bagi pengguna yang terbiasa, sementara antarmuka grafis (GUI) lebih cocok bagi pengguna awam dengan tampilan visual yang intuitif. Penting untuk mengikuti praktik-praktik terbaik, seperti menggunakan naming conventions yang konsisten dan memahami fitur-fitur seperti rebase dan stash untuk menjaga alur kerja yang terorganisir dalam penggunaan Git.