Git dan Gitlab Cheatsheet Bahasa Indonesia

Ali Irsyaad Nursyaban
8 min readMar 23, 2021

--

Problem

Pernah ga mengerjakan suatu proyek atau tugas dan terdapat beberapa perubahan yang tidak ingin kalian hapus dan akhirnya membuat banyak file seperti ini

Problem 1

Atau kalian bekerja dalam kelompok sudah familiar dengan github / gitlab namun masih bergantian pull dan push repository di branch master?

Problem 2

Dalam problem 1 hanya terdapat satu file bagaimana jika ada puluhan bahkan ratusan file? dan pada problem 2 masih kelompok yang beranggotakan dua orang, bagaimana jika belasan atau bahkan puluhan? tentu akan sangat merepotkan. Kedua problem diatas adalah contoh paling simple dari pengembangan perangkat lunak yang tentunya masih banyak problem lain yang lebih kompleks. Maka dari itu git hadir untuk menyelesaikan permasalahan tadi dan membuat pekerjaan kita lebih produktif dan fokus terhadap apa yang ingin dibuat. Dalam artikel ini akan dibahas mengenai git dalam konteks pengembangan perangkat lunak.

Apa itu Git?

Git merupakan Version Control System yang diciptakan oleh Linus Torvalds (pencipta linux) pada tahun 2005. Lalu apa itu Version Control System?

VCS (Version Control System) adalah sistem yang menyimpan dan mengelola rekaman perubahan dari sebuah dokumen, program komputer, website dan kumpulan informasi lain. Terdapat berbagai VCS selain git antara lain : Subversion, Mercurial, dan CVS.

Singkatnya folder yang menggunakan git disebut dengan repositori, dan perubahan pada satu atau banyak file, git menyimpannya dengan sebutan commit. Lalu jika ingin berganti antara perubahan satu dan lainnya menggunakan checkout. Untuk lebih lengkapnya akan dibahas pada bagian selanjutnya.

Apa itu Gitlab?

Gitlab adalah sebuah layanan website berbasis cloud yang menyediakan akses remote ke git repositories. Selain meng-hosting kode Anda, layanan ini menyediakan fitur tambahan yang dirancang untuk membantu mengelola siklus pengembangan software. Terdapat banyak layanan serupa selain gitlab antara lain Github, dan Bitbucket.

Perlu diingat kita dapat menggunakan git tanpa gitlab. Jadi jika kita ingin hanya melakukan versioning pada lokal repositori, kita tidak memerlukan gitlab. Tetapi jika kita ingin mengerjakan secara berkelompok dan remote akan lebih mudah jika memiliki repositori pada gitlab sehingga dapat mengerjakan secara independen pada masing-masing komputer. Dengan menggunakan git dan gitlab maka pengembangan perangkat lunak akan lebih produktif dan efisien.

Git Explaned

Berikut adalah istilah dan command pada git yang sering digunakan.

Setup :

Git init
Untuk membuat repositori git pada suatu folder.

git init <path-to-folder>
// default current folder

Pada contoh ini saya mencoba membuat folder lalu melakukan inisiasi repositori dengan git init. Dan terlihat akan terbuat folder bernama “.git” yang menyimpan segala keperluan dari git.

Git remote
Untuk menghubungkan repositori lokal dengan repositori remote pada gitlab.

// Menambah koneksi remote
git remote add origin <url-remote-repository>
// Mengganti koneksi remote
git remote set-url origin <url-remote-repository>

Ada dua protokol untuk menghubungkan repositori lokal dengan repositori remote yaitu SSH dan HTTPS. Untuk SSH kita perlu men-set private and public key, dan protokol ini lebih aman jika dibanding HTTPS. Karena saya sudah set SSH key maka saya menggunakan protokol SSH.

Kita bisa mengubah protokol, ataupun koneksi ke repositori lain seperti contoh berikut saya mengubah protokolnya menjadi HTTPS.

Git clone
Untuk menginisiasi repositori lokal yang langsung terhubung dengan remote repositori pada suatu folder dan langsung pull semua commit yang ada di remote repositori.

git clone <url-remote-repository> <path-to-folder>
// default membuat folder baru sesuai nama remote repositori

Workflow / Trees

Terdapat tiga bagian yang disebut trees yaitu :

sumber : https://rogerdudler.github.io/git-guide/

Working Directory: tempat kita mengerjakan proyek
Index / Stages: tempat mengelola apa yang ingin di commit
HEAD: Mengarah pada commit terakhir.

Git status
Untuk melihat informasi trees beserta commit dan branch.

git status

Git add
Untuk menambahkan file, folder yang akan disimpan perubahannya ke stage.

// Menambahkan file / folder ke stage
git add <file>
// Menambah seluruh file / folder ke stage
git add -A

Misal saya melakukan perubahan pada README.md dan .gitignore dengan menambahkan hello diakhir baris.

Lalu melakukan git add README.md namun tidak .gitignore.

  • .gitignore berfungsi untuk membiarkan segala file / folder yang terdaftar didalamnya, sehingga jika di add maka tidak akan ter-include.

Git commit
Untuk menyimpan semua perubahan yang ada pada stage ke HEAD (commit terakhir)

git commit -m "<Commit notes>"

Saya coba commit changes yang ada di README.md dengan notes “Change README.md”

Berikut contoh history commit pada gitlab.

Git log
Untuk melihat daftar commit yang sudah ada

git log

Pada contoh diatas terlihat hasil commit terakhir dan commit-commit sebelumnya. Pada dasarnya commit memiliki unique identifier yaitu random string kosong hash.

Branch dan Merge

Branching digunakan untuk memisahkan hasil pekerjaan yang sudah ada dengan pekerjaan yang sedang dikembangkan. Biasanya digunakan untuk membuat fitur baru atau memisahkan production dan staging. Branch master adalah branch bawaan saat membuat repositori. Setelah branching maka proses penggabungan branch yang disebut merge.

Git branch
Untuk mengelola branch.

// Membuat branch baru
git branch <branch-name>
// Melihat branch yang ada
git branch
// Menghapus branch
git branch -d <branch-name>

Berikut adalah contoh real implementasi branch pada gitlab.

Git checkout
Untuk berpindah ke branch yang diinginkan dan untuk meng-undo perubahan pada working directory.

// Pindah ke suatu branch
git checkout <branch-name>
// Undo perubahan pada working directory
git checkout <file-name>
// Membuat dan pindah ke branch baru
git checkout -b <branch-name>

Contoh diatas git checkout untuk berpindah branch ke PBI-0.

Contoh diatas menggunakan git checkout untuk pindah ke commit lain. Saya menggambil beberapa karakter dari unique identifier dari commit “e60e6a9” (minimal 7 karakter) dan commit ini merupakan commit sebelum “Change README.md”.

dan terlihat tidak terdapat hello pada akhir baris README.md.

Git merge
Untuk menggabungkan branch lain ke current branch.

// Menggabungkan branch lain ke current branch
git merge <other-branch>

Sebelumnya saya berpindah ke branch PBI-0 kembali dan melakukan commit untuk perubahan .gitignore.

Contoh diatas saya melakukan merge PBI-0 -> master dan terlihat kedua commit pada PBI-0 sudah berada pada branch master.

Proses merge juga bisa dilakukan pada gitlab yaitu dengan membuat merge request.

Git Rebase
Mirip seperti merge yaitu menggabungkan branch lain ke current branch. namun rebase akan menerapkan commit pada branch yang akan digabungkan satu per satu secara berurutan.

// Menggabungkan file-file pada branch lain ke current branch
git rebase <other branch>

Contoh diatas melakukan rebase dari PBI-0 ke staging. Dan melakukan git pull untuk merge remote branch staging ke local

lalu akan dibuatkan commit untuk changes tersebut. Dan melakukan push kembali ke branch staging.

Git Revert
Yntuk menggabungkan versi file pada commit sebelumnya yang dipilih, menggabungkannya dengan versi file yang sekarang dan membuat commit baru sesuai dengan commit yang dipilih.

git revert <commit hash>

Saya melakukan revert pada commit sebelumnya, dan jika terdapat conflict maka kita perlu meresolve conflict tersebut.

Resolve Conflict

Pada eksekusi sebelumnya terdapat conflict yaitu saat terdapat suatu line pada file yang terganti secara bersamaan.

Terdapat notasi “<<HEAD” dan “>> parent of …” yang dipisahkan oleh “===”. Bagian pertama merupakan perubahan yang sebelum changes tiba, sedangkan bagian kedua adalah incoming changes. Kita perlu memilih mana changes yang diinginkan dan commit ulang. Jika di text editor biasa pemilihan dilakukan dengan cara menghapus secara manual. Namun jika di code editor seperti visual studio code kita dapat langsung memilih mana changes yang diinginkan.

Bekerja dengan Remote Repositori

Git push
Untuk mengirimkan commit yang berada di HEAD ke branch remote repositori yang telah dikoneksikan

git push origin <nama-branch>

Contoh diatas melakukan push commit ke remote origin PBI-0. Tag “ — set-upstream” digunakan agar pada eksekusi push selanjutnya tidak perlu menspesifikan remote repository dan nama branch.

Periksa gitlab remote dan akan terdapat branch baru pada gitlab.

Git pull
Untuk memperbaharui commit yang berada pada branch remote repositori yang telah dikoneksikan

git pull origin <nama-branch>

Sebelumnya saya melakukan perubahan di repository lain pada branch PBI-0. Pada contoh diatas saya melakukan pull untuk mengambil perubahan tersebut yaitu penambahan angka 2 pada “Hello”

Demikian penjelasan singkat mengenai Git dan Gitlab. Terimakasih telah membaca artikel ini, dan semoga bermanfaat. Sampai jumpa di artikel lain.

Referensi

https://id.wikipedia.org/wiki/Git

--

--