Menggunakan Git : Penerapan dalam Sebuah Project

Melanjutkan pembahasan tentang Git sebelumnya, setelah kita dapat memulai sebuah project dengan sistem git, lalu apa yang harus dilakukan?

Sebenarnya sudah banyak juga referensi tentang mengelola project dengan git hingga day-to-day workflownya. Nah, di sini saya hanya ingin berbagi pengalaman pribadi saya saja dalam kegiatan sehari-hari menggunakan git dalam beberapa project. Semoga bisa bermanfaat.

SourceTree vs Terminal

Dari beberapa pengalaman saya berkolaborasi dengan developer lain dalam suatu project, saya menemukan 2 stereotype developer dalam menggunakan sistem git. Ada developer yang memilih jalan lebih mudah dengan memanfaatkan SourceTree, aplikasi client untuk mengelola git yang sudah ada UI-nya, ada juga yang memilih setia dengan sistem terminal, biar lebih greget. Dan di tim Limakilo pun terbagi menjadi 2 kubu ini, wkwk.

SourceTree
Terminal

Routine Command

Setelah siap dengan senjata yang cukup untuk bermain git. Selanjutnya adalah baris perintah apa saja yang biasanya rutin digunakan untuk mengerjakan project dan bekeja dengan developer lain. Sebenarnya command-command ini wajib dihafalkan jika kalian lebih nyaman bekerja dengan terminal, tetapi jika sudah menggunakan SourceTree, maka mostly bakal lebih enak dengan klik sana klik sini, heheu.

Git File Lifecycle
Git File Lifecycle
Clone Repo
git clone https://github.com/ariffsetiawan/someproject.git someproject

Digunakan untuk melakukan cloning/copy isi sebuah repository ke folder tertentu yang kita inginkan. Menu di SourceTree yang biasa saya gunakan untuk melakukan hal ini adalah New/Clone from URL.

Branching
git checkout -b <new_branch_name>

Branch utama sebuah project biasanya secara default ada di master. Nah, fitur branching biasanya digunakan untuk sebuah percobaan atau membagi level project ke dalam kategori tertentu. Tujuannya untuk menjaga agar branch master tetap clean. Misal, saya ingin mencoba menambahkan fitur tambahan yang tidak harus digabungkan ke repository utama terlebih dahulu maka saya biasanya membuat branch sendiri dengan nama arif-dev atau arif-debug. Nama yang digunakan juga biasanya merepresentasikan apa yang ada di branch tersebut agar developer lain langsung tau. Atau bisa juga digunakan untuk membagi level project sebagai branch testing dan branch production, yang biasanya menggunakan konfigurasi yang berbeda.

git checkout master

git checkout some_branch

Perintah di atas digunakan untuk berpindah branch.

Status
git status

Digunakan untuk melakukan pengecekan kondisi terakhir pada branch yang sedang kita buka.

Staging
git add foo.js
git add .

Digunakan untuk menambahkan berbagai perubahan yang kita lakukan ke dalam suatu koleksi yang nantinya siap untuk diunggah ke repository.

Commit
git commit -m "Fixing some bug"

Biasanya digunakan untuk menambahkan titik perubahan beserta pesannya pada koleksi yang sudah ada dalam tahap staging sebelum benar-benar diunggah ke repository. Usahakan pesan yang ditulis merepresentasikan perubahan terhadap perubahan yang dilakukan.

Push
git push

Digunakan untuk mengunggah koleksi perubahan yang sudah lengkap berikut dengan pesannya ke repository untuk digabungkan dengan hasil pekerjaan developer lain yang terhubung dengan repository yang sama. Kita akan selalu mempunyai yang namanya local repository dan remote repository (jika sudah terhubung dengan layanan cloud sistem git seperti Github atau Bitbucket, dll). Pada proses push inilah biasanya harus diantisipasi terjadinya conflict jika kita melakukan perubahan pada baris dan file yang sama dengan developer lain.

Fetch
git fetch upstream

Digunakan untuk mengunduh semua perubahan yang ada dari repository. Mirip dengan git pull, bedanya fetch hanya mengunduh perubahan sedangkan pull mengunduh dengan otomatis dilanjutkan dengan merge.

Merge
git merge origin/master

Fitur ini biasanya saya gunakan untuk menggabungkan kode program antara beberapa branch yang berbeda. Ada juga alternatifnya yaitu rebase.

Pull
git pull origin/master

Digunakan untuk mendapatkan perubahan terbaru di repository yang dilanjutkan langsung dengan proses merge.

Tag
git tag -a v0.1

Biasanya saya gunakan untuk menambahkan pointer atau versioning pada titik commit tertentu. Lebih untuk memudahkan jika suatu saat ingin mengembalikan state project pada titik tertentu. Misal saya punya project X v0.1, X v0.2, dst. Nah, versi-versi itulah yang dapat digunakan sebagai tagging.

Gitignore

Digunakan untuk  menentukan file-file dan atau folder mana saja yang akan di-exclude atau diabaikan dari sistem git. Misal untuk project yang menggunakan Node.js maka folder node_modules sudah pasti akan dimasukkan ke dalam gitignore karena isinya akan diupdate dari cloud repository. Atau bisa juga memasukkan folder log ke dalam gitignore jika menggunakan sistem logging berbasis file.

***

Mungkin itu beberapa perintah rutin yang saya gunakan dalam kehidupan sehari-hari sebagai developer. Ada yang mau menambahkan?

Sampai jumpa di pembahasan selanjutnya ya.

๏ 169 readers

Leave a Reply