Belajar Git Pemula: Memahami Penggunaan Git dari Dasar

whynwd

whynwd Rabu, 04 Mei 2022

Belajar Git Pemula: Memahami Penggunaan Git dari Dasar

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.

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel