Git adalah salah satu tool atau alat yang pasti digunakan bagi siapapun yang merasakan manfaatnya, yang menjadi bagian penting karena fungsi dan fitur yang sangat berguna untuk menunjang produktifitas.
Fitur dan manfaat seperti apa, kita akan pelajari disini. Bagi yang baru mulai dengan Git, bersama kita akan pelajari, selain melihat apa manfaatnya, kita juga akan pelajari seperti apa konsep dari Git, bagaimana menggunakan Git, dan alasan kenapa menggunakan Git.
Apa itu Git?
Kita mulai dari bagian paling dasar, membahas tentang apa itu Git. Git bukanlah Github. Git berbeda dengan Github. Git adalah version control system (VCS), sedangkan Github adalah layanan hosting. Keduanya adalah dua hal yang berbeda.
Tidak membahas keduanya saat ini, kita hanya akan mempelajari salah satunya, yaitu Git; meskipun saat praktek nanti kita tetap akan menggunakan keduanya secara bersamaan.
Kembali ke version control system (VCS). Git adalah version control system (VCS). Apakah ada VCS lain seperti Git? ada!. Contohnya ada Subversion dan Mercurial.
Setiap VCS tentu berbeda satu sama lain, mulai dari kemampuan, konsep, dan cara kerjanya. Dan Git adalah yang paling populer.
Apa yang dilakukan Git?
Dalam pengembangan baik proyek individu atau bekerja bersama dalam tim, salah satu manfaat Git adalah bahwa kita akan memiliki history atau riwayat.
Git akan merekam dan atau melacak kode kita setiap ada perubahan, penambahan atau modifikasi yang kita lakukan dan atau oleh tim dengan informasi jelas mengenai siapa dan kapan perubahan itu dilakukan.
Seperti misalnya hari ini kita melakukan perubahan terhadap kode pada suatu file atau bagian tertentu pada proyek yang sedang kita kerjakan, kemudian mencoba milihat kembali perubahan tersebut di kemudian hari; alih-alih berusaha mengingat, mencari bagian mana yang dilakukan perubahan, Git akan menolong kita.
Kita akan dengan mudah mengetahui informasi baik itu tanggal, waktu, pada file apa, pada baris keberapa dan lain sebagainya. Bahkan jika proyek kita hilang atau tidak sengaja terhapus baik keseluruhan atau pada salah satu file, kita dapat mengembalikannya.
Apakah harus menggunakan Git?
Kebiasaan atau keseharian kita dengan coding, membuat aplikasi, mengerjakan proyek, terlebih lagi berkerja bersama dalam komunitas atau dengan tim dan saling berbagi tugas atau pekerjaan, menggunakan Git adalah pilihan yang tepat.
Kita lihat fitur dan manfaat Git lainnya. Seperti yang banyak disinggung diatas, bahwa dalam pengembangan suatu proyek, kita dapat melakukan kolaborasi, bekerja bersama dengan seorang teman, tim, atau bahkan dengan siapapun yang kita kehendaki yang ingin berkontribusi pada proyek kita.
Jika bertanya: Apakah kode atau proyek kita tidak rusak atau berantakan jika ada perbaikan atau penambahan oleh tim atau orang lain yang ingin berkontribusi?
Jawabannya: Tidak. Kode proyek kita tetap aman, kita bisa menjaganya. Kita bisa menjaga kode yang asli atau kode utama kita dengan fitur Git lainnya, yaitu fitur Cabang atau Branch.
Git Branching adalah fitur yang memungkinkan kita untuk tetap menjaga kode asli atau proyek utama kita dengan membuat cabang, salinan kode asli.
Sebagai contoh. Anggap saja kita sedang membangun proyek aplikasi web. Jika kita atau anggota tim ingin melakukan perbaikan atau penambahan fitur pada bagian tertentu, navigasi atau menu misalnya, kita dapat membuat cabang baru dengan salinan kode asli dari 'menu'.
Jadi perbaikan atau penambahan fitur dilakukan pada kode cabang, bukan yang asli. Kemudian apabila perubahan telah selesai dilakukan pada cabang, biasanya dilakukan diskusi, melakukan peninjauan atau persetujuan sesama anggota tim untuk kemudian digabungkan atau memperbaharui kode proyek utama.
Ketika salah satu anggota melakukan koreksi atau perubahan pada suatu file atau bagian kode, kita tidak perlu menunggu perbaikan atau penambahan fitur selesai dilakukan. Kita tetap dapat mengerjakan proyek sesuai bagian masing-masing.
Dengan Git setiap file dapat tetap sinkron dan dengan informasi jelas, apakah ada penambahan, penghapusan, atau pembaharuan kode.
Manfaat dan alasan lainnya mungkin bisa dirasakan atau diketahui sendiri setelah mencoba dan terbiasa menggunakan Git.
Persiapan Awal
Pembahasan kita akan lebih jauh dan mendalam dengan contoh dan praktek. Sebagai persiapan awal, kita lakukan penginstalan Git terlebih dahulu.
Silakan download Git dan lakukan instalasi seperti biasa jika belum menginstalnya. OS yang digunakan mungkin berbeda, kiranya dapat menyesuaikan. Untuk OS yang digunakan dalam contoh di pembahasan Git disini menggunakan Windows.
Menambahkan Pengguna
Selanjutnya ketika baru pertama kali menginstall Git, kita perlu mengatur akun Git terlebih dahulu untuk informasi pengguna berupa nama dan email.
Silahkan buka aplikasi Command Prompt yang digunakan, atau Git Bash bawaan dari instalasi Git, kemudian jalankan perintah di bawah ini.
git config --global user.name "name / username" git config --global user.email [email protected]
Akun atau informasi pengguna yang kita tambahkan diatas merupakan akun global atau utama yang akan selalu digunakan di setiap aktifitas Git yang membutuhkan informasi pengguna. Dan dilakukan hanya sekali.
Jika kita memiliki proyek tertentu dengan akun berbeda, kita bisa menambahkan
nama dan email lain sesuai proyek yang sedang digunakan dengan menghilangkan
opsi --global
.
git config user.name "name / username" git config user.email [email protected]
Jalankan git config --list
untuk melihat konfigurasi yang ada.
Pengenalan
Sekarang kita pengenalan terlebih dahulu terhadap beberapa istilah dasar ataupun baris perintah yang berhubungan dengan Git.
- Working Directory: Direktori kerja / folder proyek.
- Repository (repo): Project / proyek Git.
- Modified: File yang dimodifikasi.
- Staging: Menandai file yang akan di commit. Setiap perubahan yang dilakukan sebelum di lakukan commit harus masuk ke staging area terlebih dahulu.
- Commit: Menyimpan / memasukan perubahan file ke penyimpanan lokal dari staging area.
- git init: Inisialisasi / mengubah proyek menjadi repositori Git. Inisialisasi dapat dilakukan pada proyek kosong ataupun yang sudah jadi.
- git status: Memeriksa status File. Melakukan pelacakan terhadap perubahan / modifikasi file, commit baru, status staging file, atau file baru.
- git add: Menambahkan / menentukan file untuk dilacak. File baru atau file yang modifikasi dimasukan ke staging area.
- git push: Upload repositori lokal ke remote repository.
- git pull: Mengambil dan menggabungkan perubahan dari remote repository ke repositori lokal.
- git checkout: Memperbarui file, memulihkan file atau beralih antar cabang.
Istilah-istilah lainnya mungkin dapat kita lihat nanti secara bertahap saat pembahasan. Sekarang mari kita lihat contoh sederhana dan mencobanya.
Contoh dan Praktek
Mari kita coba membuat repositori dan menggunakan beberapa perintah diatas. Langkah pertama kita buat folder baru dengan nama belajar-git atau nama apa saja, dan buat dimana saja. Kemudian buka di command prompt.
Sebagai contoh, saya membuat folder baru 'belajar-git' dan berlokasi di desktop.
//powershell ➜ belajar-git pwd C:\Users\2W7N9W3\Desktop\belajar-git
Selanjutnya kita jalankan git init
untuk membuat repositori Git
kosong baru. Pastikan inisialisasi dilakukan pada folder yang baru dibuat
tadi.
➜ belajar-git git init Initialized empty Git repository in C:/Users/2W7N9W3/Desktop/belajar-git/.git/
Setelah itu silahkan tambahkan file baru apa saja di dalam folder 'belajar-git'. Contoh: index.html.
//belajar-git/index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Title</title> </head> <body> <h1>Hello World!</h1> </body> </html>
Kemudian jalankan perintah git status
.
➜ belajar-git git status On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) index.html nothing added to commit but untracked files present (use "git add" to track)
Jika dilihat pada status diatas, file tersebut tidak terlacak. Agar dapat dilacak, kita masukan dahulu ke
dalam antrian atau staging area dengan perintah git add
seperti
di bawah ini.
git add index.html
Perhatikan perintah diatas. Kita gunakan
git add <nama-file>
untuk menambahkan sebuah file. Jika
file yang dibuat lebih dari satu, kita dapat menggunakan titik (.) sebagai ganti
<nama-file>
. Contoh: git add .
.
Kembali kita lihat status saat ini.
➜ belajar-git git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: index.html
Status file telah berubah, dan kita dapat langsung melakukan commit. Sekarang
jalankan perintah git commit
seperti di bawah ini.
git commit -m "first commit"
-m
(msg) digunakan untuk memberikan keterangan / pesan terhadap commit yang kita lakukan. Opsi ini perlu kita berikan untuk memperjelas atau memberikan komentar terhadap perubahan atau apapun yang kita lakukan pada kode proyek.
➜ belajar-git git commit -m "first commit" [master (root-commit) 4055404] first commit 1 file changed, 13 insertions(+) create mode 100644 index.html
Sampai disini commit berhasil dilakukan dan repositori yang sebelumnya kosong sekarang memiliki file yang dapat dilacak atau dibawah kendali Git.
Jalankan perintah git log
untuk melihat riwayat commit, seperti
checksum file (SHA-1), nama, email, tanggal, dan pesan commit.
Kita lihat contoh lain dan masuk ke bagian utama dari proyek Git, melihat bagaimana alur kerja dasar Git.
Direktori .git
Jika kita lihat pada saat menjalankan git init
untuk membuat
respositori baru, yang terjadi sebenarnya adalah bahwa Git membuat direktori
tersembunyi yaitu .git
pada folder yang kita lakukan
inisialisasi.
Direktori .git
ini adalah tempat dimana semua riwayat Git atau
data-data penting Git berada, dan yang disalin ketika kita mengkloning
repositori dari komputer lain.
Git menyimpan datanya sebagai rangkaian snapshot, bukan kumpulan file. Dan selama kita memiliki snapshot konten yang telah disimpan, maka bisa kita manfaatkan untuk mengatasi hal-hal yang mungkin tidak kita inginkan terjadi, seperti misalnya kode rusak karena kesalahan edit atau file hilang akibat tidak sengaja terhapus.
Dengan Git, kita dapat mengembalikan kode ke semula, mengambil snapshot terakhir yang disimpan, atau memulihkan file yang terhapus.
Untuk contoh dan praktek berikutnya, mari kita coba hapus file index.html yang ada di folder 'belajar-git', lalu mengambil kembali atau memulihkan file tersebut.
Silahkan hapus file index.html kemudian jalankan perintah seperti di bawah ini.
git checkout -- index.html
Setelah perintah diatas dijalankan, maka file yang sebelumnya dihapus telah kembali atau dipulihan. Silahkan lihat kembali folder 'belajar-git' untuk memastikan.
Dari mana datangnya file tersebut? File yang dipulihkan tersebut adalah
snapshot commit terakhir yang diambil dari database yang ada di direktori
.git
.
Pohon Kerja (Working tree)
Di Git ada yang namanya Working tree atau pohon kerja. Pohon kerja
adalah kumpulan file dan folder yang ada di working directory atau folder
proyek yang dikaitkan dengan repositori. Semua file dan folder yang berada di
luar direktori .git
merupakan pohon kerja Git.
Setiap file yang kita edit, hapus, atau snapshot yang di ambil dari direktori Git akan terlihat atau berada di pohon kerja. Saat kita membuka file proyek repositori, yang kita lakukan adalah mengakses pohon kerja Git.
Index (Staging Area)
Index adalah istilah teknis Git atau nama alternatif untuk staging area. File
khusus yang berada di direktori .git
ini menyimpan informasi setiap file
yang dilacak untuk commit berikutnya.
Sampai disini setelah memahami beberapa istilah, fungsi dan tugasnya, untuk memahami alur kerja Git, kita dapat sederhanakan dengan melihat urutan kerja seperti berikut:
- Pertama, Kita melakukan memodifikasi file di pohon kerja.
- Kedua, dari pohon kerja kita tambahkan ke index (staging area).
- Terakhir, kita lakukan commit, menyimpan perubahan.
Git juga memiliki tiga status utama yang melihat kondisi file, yaitu:
modified
, staged
, dan committed
.
- Modified: adalah file yang telah dimodifikasi, namun belum kita lakukan commit.
- Staged: adalah file yang dimodifikasi telah kita masukan ke staging area atau antrian untuk commit berikutnya.
- committed: telah melakukan commit, memasukannya ke database local Git.
Dalam prakteknya dapat kita baca seperti berikut: Jika suatu file kita edit
atau modifikasi tetapi belum dimasukan ke staging area, berarti
Modified
. Jika sudah ditambahkan ke staging area, berarti
Staged
. Dan jika kita melakukan commit dan data disimpan di repositori berarti
committed
.
Status File: Terlacak / Tidak Terlacak
Setiap file yang ada di folder proyek kita dapat berstatus terlacak dan tidak terlacak.
File terlacak atau yang dilacak adalah file yang di bawah kendali Git, file yang ada di snapshot commit, yang dapat berstatus seperti tiga status diatas, serta file baru yang telah kita masukan ke staging area.
Contoh. Silahkan edit file index.html, lakukan perubahan apa saja, lalu simpan.
Jika kita jalankan git status
, maka hasilnya seperti di bawah
ini, berstatus Modified
.
➜ belajar-git git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: index.html no changes added to commit (use "git add" and/or "git commit -a")
Jalankan perintah git diff
untuk melihat perubahan apa yang telah kita lakukan.
➜ belajar-git git diff diff --git a/index.html b/index.html index 5b2a766..843e58e 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Title</title> + <title>Hello World</title> </head> <body> <h1>Hello World!</h1>
Contoh diatas, saya membuat perubahan di bagian title yang diberi tanda
+
.
Selanjutnya untuk file yang tidak terlacak adalah semua file yang tidak ada di snapshot commit sebelumnya, dan atau file baru yang belum kita tambahkan ke staging area.
Contoh. Silahkan buat file baru dengan nama style.css lalu jalankan
git status
.
➜ belajar-git touch style.css ➜ belajar-git git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: index.html Untracked files: (use "git add <file>..." to include in what will be committed) style.css no changes added to commit (use "git add" and/or "git commit -a")
File style.css tersebut berstatus tidak terlacak atau
Untracked
. Selanjutnya mari kita tambahkan ke staging area untuk
dilacak.
Karena terdapat file yang dimodifikasi dan file baru yang akan dilacak, kita
gunakan git add .
untuk menambahkan keduanya sekaligus.
➜ belajar-git git add .
Setelah ditambahkan, jalankan kembali git status
.
➜ belajar-git git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: index.html new file: style.css
Keduanya sudah berada di staging area. Jika ingin melihat perubahan yang akan
kita commit, atau yang ada di staging area, jalankan
git diff --staged
.
Perlu diingat. Perubahan yang sudah di staging area berarti akan masuk ke
commit berikutnya. Jadi, jika kita edit kembali file yang sudah ada di staging
area, kita harus jalankan lagi git add
sebelum commit untuk memperbaharui ke
versi perubahan yang terbaru.
Sampai disini mari kita lakukan commit.
git commit -m 'Menambahkan file style.css dan title index.html diubah'
Jalankan git log
untuk melihat riwayat commit.
➜ belajar-git git log commit 7e5559d19e91cfb23a953054a42687f83627ab95 (HEAD -> master) Author: wahyunanangwidodo <[email protected]> Date: Sun May 1 13:21:48 2022 +0700 Menambahkan file style.css dan title index.html diubah commit 4055404678322c6778a7887cf74fa98685325f16 Author: wahyunanangwidodo <[email protected]> Date: Sun May 1 03:28:24 2022 +0700 first commit
Commit berhasil. Sampai disini kita telah memiliki repositori lokal dan mencoba melakukan commit.
Repositori lokal adalah repositori yang ada di disk komputer kita. Selain repositori lokal, ada juga istilah remote repository (repositori jarak jauh), yang merupakan repositori lokal yang kita upload di layanan hosting, seperti github.
Cabang (branch) Default Git
Kita sudah mencoba membuat repositori dan melakukan commit. Pada saat commit yang pertama kita lakukan, Git memberi kita sebuah cabang default dengan nama 'master'.
Beberapa output diatas manampilkan cabang tersebut. Jalankan git branch
untuk melihat cabang yang ada.
➜ belajar-git git branch * master
Nama 'master' ini adalah nama cabang default di Git. Dan hanya sekedar nama. Kita bisa mengubahnya dengan nama lain, sesuka kita.
Perintah di bawah ini akan mengubah nama cabang default sebelum cabang dibuat.
git config --global init.defaultBranch <nama-cabang-default-baru>
Gunakan perintah di bawah ini untuk mengubah nama cabang yang sudah ada.
git branch -M <nama-cabang-baru>
Sekilas Percabangan di Git
Cabang di Git pada dasarnya adalah hanya sebagai penunjuk ke commit yang kita buat. Seperti label yang berisi semua commit.
Setiap repositori Git memiliki satu cabang default. Dalam satu repositori bisa memiliki lebih dari satu cabang. Kita bisa menambahkan cabang baru dan melakukan penggabungan cabang ke cabang.
Dengan adanya cabang, pekerjaan kita dapat menyimpang dari jalur pengembangan utama. Kita bisa membuat salinan kode dengan mudah dan melakukan perubahan di jalur pengembangn lain tanpa menyentuh kode utama proyek.
Selesai
Pembahasan mengenai percabangan sepenuhnya tidak dibahas disini. Pembahasan Percabangan Git dibahas khusus di pembahasan Git dasar bagian #2:
Belajar Git Pemula #2: Percabangan Dasar Git
Silahkan pelajari kembali apa yang sudah dibuat diatas dan lakukan eksperimen. Belajar Git dasar bagian pertama selesai sampai disini.