Proyek: Git Workflow — Git

Saatnya mempraktikkan feature branch workflow lengkap! Skenario: Kamu membangun website dan perlu menambahkan navbar dan footer secara paralel. Langkah…

Di proyek ini kamu memakai semua yang sudah dipelajari dalam satu alur: commit awal, satu branch per fitur, merge ke main, lalu tag untuk rilis. Alur ini disebut feature branch workflow. Bayangin redaksi majalah. main itu edisi utama yang selalu rapi. Tiap rubrik ditulis di draft-nya sendiri (branch), dan baru dimasukkan ke edisi utama setelah selesai (merge). Waktu semua rubrik sudah masuk, edisinya dicap "Edisi 1.0" (tag), supaya kapan pun bisa dicari lagi persis seperti waktu terbit.

🧪 Tebakan cepat: kalau kamu mengikuti langkahnya persis, berapa commit yang ada di main di akhir: 3, 4, atau 5? Tebak dulu, jawabannya ada di bagian "Menghitung commit di main".

Rencananya

Project-nya website kecil dengan tiga file: index.html, navbar.html, dan footer.html. Navbar dan footer dikerjakan di branch masing-masing.

  1. git init, commit semua file sebagai initial setup.
  2. Branch feature-navbar: ubah navbar.html, commit add navbar, merge ke main.
  3. Branch feature-footer: ubah footer.html, commit add footer, merge ke main.
  4. Di main, buat tag v1.0.
o initial setup -- o add navbar -- o add footer   <- main, tag v1.0

Langkah demi langkah

$ git init
$ git add .
$ git commit -m "initial setup"

$ git switch -c feature-navbar           # atau: git checkout -b feature-navbar
$ echo "Kontak" >> navbar.html
$ git add navbar.html
$ git commit -m "add navbar"
$ git switch main                        # atau: git checkout main
$ git merge feature-navbar
Updating 1a2b3c4..5d6e7f8
Fast-forward
 navbar.html | 1 +
 1 file changed, 1 insertion(+)

$ git switch -c feature-footer
$ echo "Budi 2026" >> footer.html
$ git add footer.html
$ git commit -m "add footer"
$ git switch main
$ git merge feature-footer
Updating 5d6e7f8..9a0b1c2
Fast-forward
 footer.html | 1 +
 1 file changed, 1 insertion(+)

$ git tag v1.0
$ git tag
v1.0

Menghitung commit di main

Sesudah main menunjuk ke Commit di main
commit "initial setup" initial setup 1
git merge feature-navbar add navbar 2
git merge feature-footer add footer 3

Kedua merge-nya fast-forward: waktu di-merge, main belum bergerak sejak branch fiturnya dibuat, jadi Git cukup menggeser main maju tanpa membuat commit baru. Hasilnya main punya 3 commit. Itu jawaban tebakannya.

Kalau kedua branch dibuat bersamaan dari "initial setup", merge yang kedua gak bisa fast-forward, karena main sudah maju duluan. Git lalu membuat merge commit, commit khusus dengan dua parent, dan git log menampilkan 4 commit. Syarat latihannya, minimal 3 commit di main, tetap terpenuhi dengan dua cara itu.

Tag rilis di akhir

git tag v1.0 memasang label tetap di commit tempat HEAD berada. Bedanya dengan branch: branch maju tiap ada commit baru, tag diam di commit itu selamanya. Makanya tag dibuat paling akhir, di main, setelah kedua fitur masuk. Cek hasilnya dengan git tag.

⚠️ Jebakan yang sering ketemu

📌 Langkah berikutnya: berbagi lewat GitHub

Sejauh ini semuanya ada di laptopmu. Supaya tim bisa ikut, repo-nya disimpan juga di server seperti GitHub, yang disebut remote. Empat perintah ini dibahas lengkap di materi Git Remote & Clone dan Git Push & Pull:

$ git clone https://github.com/user/repo.git   # salin repo dari GitHub ke laptop
$ git push origin main                         # kirim commit di main ke GitHub
$ git pull                                     # ambil perubahan terbaru dari GitHub, lalu gabungkan
$ git push origin main
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'https://github.com/user/repo.git'

Solusinya: git pull dulu supaya commit itu ikut tergabung, baru git push lagi.

TL;DR: Feature branch workflow: commit awal di main, satu branch per fitur (git switch -c feature-navbar), ubah file dan commit di sana, kembali ke main lalu git merge, ulangi untuk fitur berikutnya, dan terakhir git tag v1.0 di main. Kalau tiap fitur di-merge sebelum fitur berikutnya dimulai, semua merge-nya fast-forward dan main berakhir dengan 3 commit. Merge selalu dari main, tag paling akhir, dan posisi akhirmu di main. Berikutnya: git clone, git push origin main, dan git pull buat berbagi lewat GitHub.

Yang akan kamu pelajari