Version Control, Team Coding, Git Flow.

putu agastya
Software Project Course Blog - Marjinal
3 min readApr 30, 2020

Version Control merupakan sebuah sistem yang merekam perubahan terhadap sebuah file atau sekumpulan file agar pengguna dapat melihat kembali versi-versi sebelum nya. version control system biasanya digunakan pada proses pengembangan perangkat lunak, sebenarnya kita dapat menggunakan version control system untuk kebutuhan lain juga.

Local Version Control Systems

Contoh version control (sumber)

Mungkin anda pernah mengerjakan suatu dokumen dan menyimpan dokumen itu dengan berbagai nama untuk menandakan versi dari dokemen tersebut. Hal tersebut bisa dibilang sebuah version control system. Untuk mengatasi masalah version control lokal, programer mengembangkan sebuah aplikasi yang menyimpan semua perubahan terhadap file pada sebuah database sederhana. Salah satu aplikasi yang terkenal adalah RCS. Local Version Control Systems cocok untuk digunakan oleh 1 orang pada 1 komputer, namun bagaimana jika anda ingin membagi pekerjaan tersebut dengan orang lain?

Centralized Version Control Systems

Diagram version control terpusat. (sumber)

Sistem ini memiliki satu server yang berisi semua file berversi, dan sejumlah klien yang memeriksa file dari tempat sentral itu. elama bertahun-tahun, ini telah menjadi standar untuk kontrol versi. Pengaturan ini menawarkan banyak keuntungan, terutama dibandingkan VCS lokal.

Akan tetapi, pengaturan ini masih memiliki beberapa kekurangan. Yang paling jelas adalah satu titik kegagalan yang diwakili oleh server terpusat. Jika server tersebut sedang down selama satu jam, maka selama itu tidak ada orang yang dapat bekerja bersama atau menyimpan perubahan yang telah diberi versi terhadap apapun yang sedang mereka kerjakan.

Distributed Version Control Systems

Sistem version control tersebar. (sumber)

Pada DVCS (seperti Git, Mercurial, Bazaar atau Darcs), para klien tidak hanya melakukan check out pada snapshot terakhir dari berkas: mereka mencerminkan sepenuhnya repository tersebut. sistem ini mampu menangani beberapa remote repository yang dapat mereka kerjakan dengan baik, sehingga Anda dapat bekerja bersama dengan beberapa kelompok orang yang berbeda dengan cara yang berbeda secara bersamaan dalam proyek yang sama. Kemampuan ini memperbolehkan Anda untuk mengatur beberapa jenis alur kerja yang tidak mungkin dilakukan pada sistem terpusat, seperti model hirarkial.

How Git works

The lifecycle of the status of your files. (sumber)
  1. Create a “repository” (project) with a git hosting tool (like Bitbucket)
  2. Copy (or clone) the repository to your local machine
  3. Add a file to your local repo and “commit” (save) the changes
  4. “Push” your changes to your master branch
  5. Make a change to your file with a git hosting tool and commit
  6. “Pull” the changes to your local machine
  7. Create a “branch” (version), make a change, commit the change
  8. Open a “pull request” (propose changes to the master branch)
  9. “Merge” your branch to the master branch

Git command

git init digunakan untuk memulai repository baru pada sebuah folder lokal.

git clone <repo url> digunakan untuk “meng-clone” repository yang sudah ada di web seperti gitlab, github atau bitbucket.

git status digunakan untuk melihat status dari file seperti modified, untracked, staged dan deleted.

git add <file> atau <directory> digunakan untuk menambahkan perubahan yang ada ke staging.

git commit biasa digunakan dengan opsi -m <pesan commit> digunakan untuk “meng-capture” snapshot dari project beserta semua perubahan yang ada di staging.

.gitignore sebuah file untuk menentukan file atau direktori apa yang tidak akan dihiraukan oleh git.

Tips

Gunakan website seperti https://www.gitignore.io/ untuk “men-generate” file .gitignore danpastikan file tersebut ada dari awal proses pengembangan. Karena file-file yang tidak revelan dapat memperkeruh repository bahkan menghabat pengerjaan proyek.

perintah git pull <remote> <branch> — no-commit dapat digunakan untuk melihat dan mengubah file dari remote sebelum mengupdate branch yang sedang kita kerjakan dengan progress dari remote

--

--