Sains & Teknologi

Git Workflow untuk Pemula: Panduan Add, Commit, dan Push

Git Workflow untuk Pemula: Panduan Add, Commit, dan Push

Git Workflow untuk Pemula: Panduan Add, Commit, Push, dan Kolaborasi

Pernah menyimpan proyek dengan nama website-final, website-final-revisi, lalu website-final-banget? Cara ini membuat perubahan sulit dilacak, apalagi ketika beberapa orang mengerjakan proyek yang sama.

Git membantu mencatat riwayat perubahan sehingga kamu bisa mengetahui apa yang diubah, siapa yang mengubahnya, dan kapan perubahan tersebut disimpan. Dengan memahami Git workflow untuk pemula, kamu dapat mengelola proyek secara lebih teratur sejak awal.

Dalam panduan ini, kamu akan mempelajari alur kerja Git, perintah dasar, penggunaan branch, serta perbedaan git fetch dan git pull. Contohnya menggunakan proyek website sederhana agar mudah dipraktikkan.

Apa Itu Git dan Apa Bedanya dengan GitHub?

Git adalah sistem kontrol versi terdistribusi untuk mencatat perubahan pada proyek. Riwayat proyek tersimpan dalam repository lokal, sehingga banyak aktivitas seperti membuat commit dan memeriksa riwayat bisa dilakukan tanpa koneksi internet.

Git dan GitHub memiliki fungsi berbeda. Git merupakan alat pengelola versi, sedangkan GitHub adalah platform untuk menyimpan repository dan berkolaborasi secara online. Git juga dapat digunakan bersama GitLab, Bitbucket, atau server sendiri.

Istilah Fungsi Contoh penggunaan
Git Mengelola perubahan dan riwayat proyek Membuat commit di komputer
GitHub Menyediakan hosting repository dan fitur kolaborasi Mengajukan pull request untuk ditinjau tim
Repository Menyimpan data dan riwayat proyek Git Repository proyek website portofolio

Memahami Alur Git: Dari File Lokal ke Remote Repository

Alur dasar saat menyimpan dan membagikan perubahan adalah:

Edit file → git add → git commit → git push

Untuk memahami alur tersebut, kenali empat bagian berikut.

1. Working Directory: Tempat Mengedit File

Working directory adalah kumpulan file proyek yang sedang kamu kerjakan. Misalnya, kamu mengubah tulisan di index.html menggunakan editor.

Working directory dapat berisi file yang sudah dilacak Git maupun file baru yang belum dilacak. Jadi, istilah working directory tidak sama dengan untracked.

2. Staging Area atau Index: Memilih Isi Commit

Staging area menampung versi perubahan yang kamu siapkan untuk commit berikutnya. Gunakan git add untuk memasukkan perubahan ke area ini.

Git menyimpan kondisi file saat perintah tersebut dijalankan. Jika kamu mengedit file lagi setelah git add, perubahan terbaru perlu ditambahkan kembali agar ikut masuk ke commit.

3. Local Repository: Menyimpan Riwayat Commit

Setelah menjalankan git commit, perubahan yang disiapkan masuk ke riwayat repository lokal.

Kamu juga akan menjumpai istilah HEAD. Biasanya, HEAD menunjuk branch yang sedang aktif dan secara tidak langsung menunjuk commit terbarunya. HEAD bukan nama lain untuk seluruh local repository.

4. Remote Repository: Berbagi Riwayat Proyek

Remote repository adalah repository lain yang terhubung dengan proyekmu, misalnya repository di GitHub. Perintah git push mengirim commit lokal dan memperbarui referensi branch di remote sesuai tujuan push.


Commit tidak otomatis mengunggah perubahan ke GitHub. Commit menyimpan perubahan secara lokal, sedangkan push membagikannya ke remote.

Persiapan Sebelum Menggunakan Git

Instal Git melalui halaman unduhan resmi Git. Setelah selesai, buka terminal dan periksa instalasinya:

git --version

Atur nama dan email yang akan dicatat sebagai identitas pembuat commit. Ganti contoh berikut dengan identitasmu:

git config --global user.name "Nama Kamu"
git config --global user.email "email@example.com"

Opsi --global menjadikannya pengaturan default untuk akun pengguna di komputer tersebut. Konfigurasi ini merupakan identitas commit, bukan proses login ke GitHub.

Tutorial Git Workflow untuk Proyek Baru

1. Membuat Repository Lokal

Buat folder proyek dan inisialisasi Git dengan nama branch utama main:

mkdir latihan-git
cd latihan-git
git init -b main

Buka folder tersebut menggunakan editor, lalu buat file index.html dengan isi berikut:




  <meta charset="UTF-8">
  <title>Latihan Git</title>


  

Website Portofolio Saya

2. Memeriksa Status File

git status

File index.html akan muncul sebagai file baru yang belum dilacak. Biasakan menjalankan perintah ini sebelum dan setelah menyimpan perubahan.

3. Memasukkan File ke Staging Area

git add index.html
git status

File tersebut sekarang disiapkan untuk commit. Untuk menambahkan seluruh perubahan di folder aktif beserta subfoldernya, kamu juga bisa menggunakan git add .. Namun, periksa dahulu agar file yang tidak diperlukan tidak ikut masuk.

4. Memeriksa Perubahan dan Membuat Commit

git diff --staged
git commit -m "Tambahkan halaman awal portofolio"

Gunakan pesan commit yang menjelaskan perubahan. Pesan seperti “Tambahkan halaman kontak” lebih informatif daripada “update” atau “fix lagi”.

Lihat riwayat singkat proyek dengan:

git log --oneline

5. Menghubungkan Repository ke GitHub

Buat repository kosong di GitHub. Untuk mengikuti contoh ini, jangan tambahkan README, lisensi, atau .gitignore dari GitHub terlebih dahulu karena proyek sudah dimulai secara lokal.

Ganti USERNAME dan nama repository pada URL berikut dengan milikmu:

git remote add origin https://github.com/USERNAME/latihan-git.git
git remote -v
git push -u origin main

origin adalah nama remote yang umum digunakan. Opsi -u mengatur hubungan pelacakan antara branch lokal dan branch tujuan. Setelah itu, pada branch yang sama kamu biasanya cukup menjalankan git push.

Jika diminta autentikasi, gunakan metode yang didukung penyedia repository, seperti credential manager, token, atau SSH.

Alternatif: Mengambil Proyek yang Sudah Ada

Jika proyek sudah tersedia di remote, gunakan clone sebagai pengganti langkah membuat repository baru:

git clone https://github.com/USERNAME/latihan-git.git
cd latihan-git

Jangan menjalankan clone ke dalam folder latihan yang sudah dibuat pada langkah sebelumnya. Jalankan dari folder induk dan gunakan repository yang memang ingin kamu salin.

Perbedaan Git Diff, Git Diff Staged, dan Git Diff HEAD

Perintah git diff membantu memeriksa perubahan sebelum disimpan.

Perintah Perbandingan yang ditampilkan
git diff Perubahan pada working directory dibanding staging area
git diff --staged Isi staging area dibanding commit HEAD
git diff --cached Sinonim dari git diff --staged
git diff HEAD Kondisi file yang dilacak di working directory dibanding commit HEAD
git diff main fitur-kontak Perbedaan isi pada ujung kedua branch tersebut

File baru yang belum dilacak tidak otomatis ditampilkan oleh git diff. Periksa keberadaannya melalui git status, lalu tambahkan ke staging jika memang ingin disimpan.

Latihan sederhana: ubah judul di index.html, jalankan git diff, kemudian jalankan git add index.html. Setelah itu, lihat perbedaannya menggunakan git diff --staged.

Apakah Git Commit -a Bisa Menggantikan Git Add?

Perintah berikut dapat menyiapkan perubahan pada file yang sudah dilacak sekaligus membuat commit:

git commit -am "Perbarui judul halaman"

Namun, file baru yang belum dilacak tidak ikut dimasukkan. Opsi -a menangani modifikasi dan penghapusan pada file yang sudah dilacak.

Jika kamu baru membuat kontak.html, tambahkan file tersebut menggunakan git add kontak.html terlebih dahulu. Untuk pemula, memisahkan langkah add dan commit juga membantu memeriksa isi commit dengan lebih teliti.

Perbedaan Git Fetch, Pull, dan Push

Git Fetch: Mengambil Informasi Terbaru dari Remote

git fetch origin

Fetch mengambil objek dan memperbarui referensi remote-tracking seperti origin/main. Perintah ini tidak langsung menggabungkan perubahan ke branch aktif atau mengubah file kerjamu.

Setelah fetch, kamu dapat melihat commit pada remote yang belum ada di main lokal:

git log --oneline main..origin/main

Git Pull: Mengambil dan Mengintegrasikan Perubahan

Pull menjalankan fetch lalu mengintegrasikan perubahan ke branch saat ini. Cara integrasinya bergantung pada opsi dan konfigurasi, misalnya merge atau rebase.

Untuk memperbarui main tanpa otomatis membuat merge commit, gunakan:

git switch main
git pull --ff-only origin main

Pastikan pekerjaan sebelumnya sudah disimpan dan working directory bersih. Opsi --ff-only hanya mengizinkan pembaruan fast-forward. Jika riwayat lokal dan remote sudah bercabang, Git akan menolak sehingga kamu perlu memeriksa riwayat dan menentukan cara integrasinya.

Git Push: Mengirim Commit ke Remote

git push

Push membagikan commit yang sudah dibuat. Perubahan yang baru diedit atau baru masuk staging belum ikut terkirim karena belum menjadi commit.

Menggunakan Branch untuk Mengerjakan Fitur

Branch memungkinkan kamu mengembangkan fitur secara terpisah dari jalur utama. Contohnya, kamu ingin menambahkan halaman kontak tanpa langsung mengubah main.

Mulai dari main yang bersih dan terbaru, kemudian buat branch:

git switch main
git pull --ff-only origin main
git switch -c fitur-kontak

Buat file kontak.html melalui editor, lalu simpan dan kirim perubahannya:

git add kontak.html
git diff --staged
git commit -m "Tambahkan halaman kontak"
git push -u origin fitur-kontak

Di GitHub, kamu dapat membuka pull request dari fitur-kontak menuju main. Pull request merupakan fitur platform untuk membahas dan meninjau perubahan, bukan perintah inti Git.

Setelah pull request digabungkan, perbarui main lokal:

git switch main
git pull --ff-only origin main

Apa Itu Git Merge dan Bagaimana Mengatasi Konflik?

Merge mengintegrasikan riwayat branch lain ke branch aktif. Untuk latihan lokal tanpa alur pull request, kamu dapat menggabungkan fitur dengan:

git switch main
git merge fitur-kontak

Ini merupakan alternatif penggabungan lokal. Kamu tidak perlu mengulangnya jika fitur sudah digabungkan melalui pull request dan main lokal sudah diperbarui.

Merge dapat berupa fast-forward atau menghasilkan merge commit, tergantung hubungan riwayat kedua branch. Konflik bisa terjadi ketika Git tidak dapat menentukan hasil penggabungan secara otomatis.

Jika terjadi konflik saat merge:

  1. Jalankan git status untuk mengetahui file yang bermasalah.
  2. Buka file tersebut dan periksa bagian konflik.
  3. Tentukan isi akhir yang benar, lalu hapus penanda konflik.
  4. Uji hasil perubahan.
  5. Jalankan git add nama-file untuk menandai penyelesaian.
  6. Jalankan git commit untuk menyelesaikan merge.

Jangan sekadar memilih semua perubahan dari satu sisi. Pastikan hasil akhirnya tetap mempertahankan fungsi yang dibutuhkan.

Membatalkan Staging Tanpa Menghapus Editan

Pada repository yang sudah memiliki commit, gunakan perintah berikut jika kamu keliru memasukkan file ke staging:

git restore --staged index.html

Perubahan pada file tetap ada di working directory, tetapi tidak lagi disiapkan untuk commit.

Perhatikan perbedaannya dengan git restore index.html tanpa opsi --staged: perintah tersebut dapat membuang perubahan yang belum di-stage dengan mengembalikan file kerja dari index. Pilih perintah sesuai tujuanmu.

Menggunakan .gitignore agar Repository Tetap Rapi

File .gitignore menentukan pola file yang tidak perlu dimasukkan sebagai file baru ke Git. Contoh untuk proyek [removed]

node_modules/
.env
.env.*
!.env.example
dist/
*.log

Sesuaikan pola dengan proyek. File .env.example sebaiknya hanya berisi nama variabel dan nilai contoh, bukan kredensial asli.

Menambahkan pola ke .gitignore tidak otomatis menghentikan pelacakan file yang sudah masuk repository. Jika sebuah rahasia pernah ter-commit, menghapusnya dari versi terbaru juga tidak menghapusnya dari riwayat; kredensial yang terpapar perlu diganti.

Kesalahan Git yang Sering Dialami Pemula

  • Mengira commit sama dengan upload: jalankan push untuk membagikan commit ke remote.
  • Lupa add setelah mengedit ulang: staging menyimpan kondisi file saat add dijalankan.
  • Mengerjakan fitur di branch yang salah: periksa branch aktif melalui git status.
  • Memasukkan semua file tanpa pemeriksaan: tinjau git status dan git diff --staged.
  • Mengatasi push ditolak dengan force push: periksa pesan error dan riwayat remote terlebih dahulu. Penolakan dapat terjadi karena ada commit orang lain atau aturan branch.
  • Membuat commit terlalu besar: pisahkan perubahan berdasarkan tujuan agar lebih mudah ditinjau.

Manfaat Git untuk Portofolio dan Pekerjaan Freelance

Repository yang rapi membantu calon klien memahami cara kamu bekerja. Lengkapi proyek dengan README berisi tujuan, fitur, cara menjalankan, serta contoh hasilnya.

Gunakan commit yang jelas dan branch untuk fitur agar perubahan mudah ditelusuri. Namun, kualitas portofolio tetap ditentukan oleh proyek yang berfungsi dan penjelasan yang dapat dipahami, bukan sekadar banyaknya commit.

Setelah memiliki proyek yang layak ditampilkan, baca panduan cara mendapatkan proyek freelance pertama di Nugasin untuk pemula untuk menyiapkan langkah berikutnya.

Pertanyaan Umum tentang Git

Apakah Git harus selalu terhubung ke internet?

Tidak. Kamu dapat mengedit, membuat commit, dan melihat riwayat secara lokal. Koneksi diperlukan ketika mengakses remote melalui jaringan.

Apakah git add langsung menyimpan perubahan ke riwayat?

Belum. Git add menyiapkan perubahan di staging area. Gunakan git commit untuk mencatatnya sebagai commit.

Mengapa file baru tidak ikut git commit -am?

Karena opsi -a hanya menyiapkan perubahan pada file yang sudah dilacak. Tambahkan file baru menggunakan git add terlebih dahulu.

Apakah git pull selalu melakukan merge?

Tidak. Strategi integrasinya bergantung pada opsi dan konfigurasi. Pull dapat menggunakan merge atau rebase, dan opsi --ff-only membatasi pembaruan agar hanya fast-forward.

Perintah apa yang sebaiknya dipelajari terlebih dahulu?

Mulai dari git status, git add, git diff, git commit, dan git log. Setelah memahami penyimpanan lokal, lanjutkan dengan remote, push, fetch, pull, branch, dan merge.

Latihan untuk Memahami Git Workflow

Buat proyek portofolio kecil, simpan halaman awal dalam satu commit, lalu tambahkan halaman kontak melalui branch terpisah. Periksa perubahan sebelum commit dan tinjau hasilnya sebelum digabungkan.

Ulangi alur edit, periksa, add, commit, dan push sampai kamu memahami perubahan berada di tahap mana. Kebiasaan ini akan memudahkanmu bekerja sendiri maupun berkolaborasi dalam proyek yang lebih besar.