Semua tentang Git sebagai Version Control

Kevin Prakasa
PPL SeLaw
Published in
6 min readFeb 25, 2019
From tim Dosen Fasilkom UI

Pada proses development suatu project, dibutuhkan suatu tools yang dapat mempermudah proses pengintegrasian kode-kode yang telah kita buat. Tentunya dalam mendevelop suatu project kita tidak mengerjakan sendirian saja, karena kita pasti bekerja sama dengan rekan kerja kita. Namun pada saat pengintegrasian atau penggabungan kode yang telah kita buat dengan yang teman kita buat terkadang sedikit susah. Maka itu hadir tools yang mempermudah proses tersebut yang menggunakan konsep versioning seperti SVN dan Git. Kedua tools tersebut biasa kita sebut dengan versioning tools. Dan tool yang sekarang sering dipakai adalah Git.

Git adalah version control system yang digunakan para developer untuk mendevelop suatu software secara bersama-bersama. Cara kerja git adalah dengan menyimpan segala perubahan yang kita lakukan pada source code kita dalam bentuk commit (saved changes).

Git layaknya sebuah konstruksi pohon

Untuk menginisiasi git pada suatu repositori lokal dapat dilakukan dengan :

  • Masuk pada direktori yang ingin diintegrasikan dengan Git
  • Ketik
git init

Git Workflow

From http://rogerdudler.github.io/git-guide/

Git memiliki workflow yang efektif dan efisien. Git membaginya menjadi beberapa stages. Stages nya terdiri dari

  1. Working Directory

Perubahan yang dilakukan di lokal komputer anda akan tersimpan pada working directory. Semua perubahan terhadap kondisi awal (kondisi commitan terakhir/inisiasi awal) akan selalu tersimpan dan direpresentasikan dalam bentuk kondisi file dan nama file tersebut. Seperti screenshot yang ada di bawah ini:

yang bewarna merah adalah file-file terdapat perubahan.

Seperti yang anda lihat, perubahan pada file-file selalu tersimpan dan direpresentasikan seperti screenshot diatas yang bewarna merah. Nah perubahan pada fase ini masih terdapat pada fase yang bernama Working Directory.

Untuk memindahkan file-file yang terletak pada fase working directory kita dapat melakukannya dengan command :

git add <nama_file_yang_ingin_dipindahkan_ke_index>

Jika ingin menambahkan semua perubahan file yang ada kedalam index/stage dapat dilakukan dengan

git add .

2. Index (Stage)

Pada fase ini, perubahan-perubahan file yang telah kita “git add “ pada fase sebelumnya sudah tersimpan dan apabila terdapat perubahan pada file tersebut maka file tersebut akan masuk kembali pada fase working directory.

Perubahan file-file yang sudah terdapat pada fase index/stages berarti file-file tersebut sudah di-indeks dan siap untuk disimpan pada satu commit. Anggaplah commit itu sebagai label atau version tag yang digunakan untuk menandakan perubahan file-file tersebut merupakan bagian dari versi tertentu.

Penyimpanan perubahan file-file tersebut kepada suatu commit dapat kita lakukan dengan command

git commit -m "<nama_commitan>"

Contohnya adalah

3. Head

Setelah melakukan git commit, maka commitan terakhir yang kita buat sekarang adalah HEAD dari status git sekarang. Yang dimaksud HEAD dari status git yang sekarang adalah apabila kita melakukan “git log” maka akan terlihat commitan terakhir adalah commitan yang barusan kita buat. Yang mendandakan kondisi working directory kita sekarang sama dengan kondisi terakhir yang ada pada commitan tersebut.

Common Git Commands

Terdapat beberapa command pada git yang sering kita gunakan untuk bekerja bersama dengan partner kerja kita. Selain yang sudah disebutkan diatas seperti init,add,commit. Diantaranya adalah

git clone <https://some_repos_link>

git clone berguna untuk menginisiasi project yang sudah terdapat pada online repository (Gitlab, Github) pada local environment kita. Sehingga akan membuat suatu folder yang berisi apa saja yang ada di online repository. Sehingga kita memiliki lokal repository yang sudah terkonek dengan online repositori. Yang dimaksud terkonek disini adalah kita bisa melakukan perubahan yang dipush pada online repository

git push <nama_remote> <nama_branch>

git push berguna untuk mengirim commitan yang ada di lokal repository kita ke online repository. Penggunaan yang biasa dilakukan adalah ketika kita telah memiliki commitan yang baru dan commitan tersebut belum ada di branch online repository kita. Maka kita perlu melakukan push untuk memperbaharui branch tersebut dengan commitan yang terbaru. Misalnya adalah

git push
git pull <nama_remote> <nama_branch>

git pull memiliki fungsi yang berlawanan dengan git push ( jelas lah ya kenapa =.=). git pull berguna untuk mengambil commitan yang tidak ada pada lokal repository kita namun ada pada online repository. Hal ini bisa terjadi ketika terdapat teman kita yang telah mengupdate branch dia dengan commitan yang terbaru, dan kebetulan branch teman kita dengan yang sedang kita gunakan sama. Maka untuk mengambil commitan yang telah dia lakukan, maka kita bisa gunakan git pull.

git branch <nama_branch>

Ingat yang tadi sudah saya bilang, sistem kerja git bisa digambarkan selayaknya konstruksi pohon. Maka itu terdapat yang namanya branch atau cabang yang bisa kita buat. Branch ini sangat berguna apabila kita ingin perubahan yang kita lakukan terlepas dari branch awal.

Git branch berguna untuk membuat branch / cabang dari current branch kita berada. Semisal kita sedang berada pada branch master, maka apabila kita melakukan “git branch user_story1” maka akan terbentuk branch user_story1. Lalu kita bisa pindah pada branch tersebut untuk melakukan perubahan pada branch tersebut.

Membuat branch dan pindah sekaligus pada branch tersebut dapat dilakukan dengan command

git checkout -b <nama_branch>

— — — — — — — — — — — — — — — — — — — — — — — — — — — —

git checkout <nama_branch>

git checkout dapat dipadukan dengan berbagai parameter dan memilki kegunaan yang sangat beragam, namun common uses yang sering dilakukan adalah git checkout <nama_branch>. Yang berguna untuk pindah branch ke branch terkait. Namun ingat pastikan tidak ada perubahan yang belom disimpan pada current branch.

git merge <nama_branch>

git merge berguna untuk me-merge atau menggabungkan branch dengan <nama_branch> dengan branch yang aktif sekarang. Aktif disini berarti letak branch anda berada sekarang.

git rebase
https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase

git rebase berguna untuk menggabungkan dua branch namun konsep nya berbeda dengan merge yang menambah commitan baru berupa merge commit. Apabila rebase, maka kita seperti menggabungukan dua commitan dari dua branch yang berbeda ke satu branch yang merupakan target. Seperti screenshot di atas, dua commitan dari branch feature terletak di paling depan dari branch master karena git rebase.

git stash

git stash merupakan command di git yang berguna untuk menyimpan local changes yang belum masuk fase index/stages kepada suatu stack. Sehingga kita dapat berganti branch tanpa harus melakukan commit terlebih dahulu. Bisa kita lakukan dengan git stash terlebih dahulu, lalu pindah branch. Apabila kita telah kembali ke branch semula dan ingin membalikkan local-changes yang telah di git stash tadi, kita dapat melakukannya dengan git pop

git revert <commit_id>

git revert berguna untuk membuat commitan terbaru yang mana commitan tersebut merupakan commitan sebelumnya yang pernah kita buat. Kondisi yang biasa terjadi adalah ketika kita telah melakukan perubahan yang tidak kita inginkan sehingga kita harus kembali ke commitan sebelumnya. Hal tersebut dapat dilakukan dengan git revert commit_id , dengan commit_id yang didapat dari git log dan mengambil id dari commit yang diinginkan.

Yah mungkin sekian penjelasan mengenai git dari saya, semoga bermanfaat bagi kalian semua. Boleh sampaikan pertanyaan dan beri clap pada post ini untuk memotivasi saya kedepannya! Terimakasih semuanya! Happy Coding, Happy life!

--

--

Kevin Prakasa
PPL SeLaw

Studying CS at University of Indonesia | Front-End Developer at my own company