Cara Kerja Git: Memahami Git Workflow untuk Pemula
A simplified view of the Git workflow, from the workspace and staging area to local and remote repositories.Git adalah salah satu version control system yang paling banyak digunakan dalam pengembangan perangkat lunak. Dengan Git, kita dapat melacak perubahan kode, kembali ke versi sebelumnya, bekerja menggunakan branch, dan berkolaborasi tanpa harus saling menimpa pekerjaan.
Namun ketika pertama kali belajar Git, command seperti
git add, git commit, git push, atau
git pull sering terasa seperti sekumpulan perintah yang harus
dihafal.
Padahal, Git menjadi jauh lebih mudah dipahami ketika kita mengetahui di mana perubahan berada dan ke mana perubahan tersebut berpindah .
Secara sederhana, workflow Git dapat dilihat melalui empat bagian utama:
Workspace → Staging Area → Local Repository → Remote Repository
Dari alur inilah sebagian besar command Git sehari-hari mulai masuk akal.
1. Memahami Git Workflow
Bagian pertama adalah Workspace, atau working directory. Ini adalah tempat kita benar-benar mengedit file project.
Misalnya kita mengubah:
src/app.py
Perubahan tersebut pertama kali berada di workspace.
Bagian kedua adalah Staging Area. Ini adalah tempat kita memilih perubahan mana yang ingin dimasukkan ke commit berikutnya.
Misalnya:
git add src/app.py
Command tersebut belum membuat commit. Git hanya menandai bahwa versi terbaru dari file tersebut siap dimasukkan ke snapshot berikutnya.
Bagian ketiga adalah Local Repository.
Ketika kita menjalankan:
git commit -m "Add login feature"
Git menyimpan snapshot dari file yang sudah berada di staging area ke dalam repository lokal.
Bagian terakhir adalah Remote Repository.
Remote repository adalah repository yang berada di tempat lain dan dapat diakses melalui koneksi remote. Layanan seperti GitHub, GitLab, dan Bitbucket merupakan contoh yang umum digunakan.
Secara sederhana, alurnya menjadi:
Workspace → Staging Area → Local Repository → Remote Repository
Command yang menghubungkan masing-masing bagian juga cukup sederhana.
git add menyiapkan perubahan ke staging area.
git commit menyimpan snapshot ke local repository.
git push mengirim commit ke remote repository.
Sementara git fetch dan git pull digunakan untuk
mengambil perubahan dari remote repository.
2. Dari Perubahan Menjadi Commit
Sebuah folder project dapat diubah menjadi Git repository dengan:
git ini
Sebelum membuat commit, Git juga perlu mengetahui identitas pembuat commit.
Biasanya konfigurasi ini cukup dilakukan sekali:
git config --global user.name "Your Name" git config --global user.email "your@email.com"
Salah satu command yang paling sering digunakan adalah:
git status
Command ini menunjukkan kondisi repository saat ini, termasuk file yang berubah, file yang sudah masuk staging area, dan file yang belum dilacak.
Misalnya kita mengubah:
src/app.py
Kemudian menambahkannya ke staging area:
git add src/app.py
Setelah itu kita dapat membuat commit:
git commit -m "Add login feature"
Cara paling sederhana untuk memahami dua command tersebut adalah:
git add menjawab:
Perubahan mana yang ingin saya masukkan ke snapshot berikutnya?
Sedangkan git commit menjawab:
Simpan snapshot tersebut ke dalam history project.
Kalau sebuah file sudah terlanjur masuk staging area tetapi belum ingin kita commit, kita dapat mengeluarkannya dengan:
git restore --staged src/app.py
Perubahannya tidak hilang. File hanya dikeluarkan dari staging area dan tetap berada di workspace.
Memahami perbedaan antara workspace, staging area, dan local repository merupakan salah satu kunci untuk memahami cara kerja Git.
3. Bekerja dengan Remote Repository
Setelah memiliki local repository, kita dapat menghubungkannya ke remote repository.
Contohnya:
git remote add origin https://github.com/username/repo.git
origin biasanya digunakan sebagai nama default untuk remote
repository utama.
Jika branch utama bernama main, commit pertama dapat dikirim
dengan:
git push -u origin main
Setelah upstream branch sudah terbentuk, biasanya cukup menggunakan:
git push
Repository lama mungkin masih menggunakan master sebagai nama
branch utama. Karena itu, nama branch tetap perlu disesuaikan dengan
repository yang digunakan.
Untuk mengambil informasi terbaru dari remote repository tanpa langsung mengubah file yang sedang kita kerjakan:
git fetch origin
Sementara untuk mengambil sekaligus mengintegrasikan perubahan dari remote:
git pull origin main
Untuk pemula, git pull sering dijelaskan sebagai proses
mengambil perubahan dari remote lalu mengintegrasikannya ke branch aktif.
Dalam penggunaan sebenarnya, proses integrasinya dapat menggunakan merge atau rebase tergantung konfigurasi Git.
Perbedaan sederhananya:
git fetch mengambil informasi dan commit terbaru dari remote
tanpa langsung mengubah working tree.
git pull mengambil perubahan dari remote dan kemudian
mengintegrasikannya ke branch yang sedang aktif.
4. Workflow Git dalam Penggunaan Sehari-hari
Dalam penggunaan sehari-hari, workflow Git sebenarnya cukup sederhana.
Pertama, cek kondisi repository:
git status
Lakukan perubahan pada file.
Setelah selesai, cek kembali:
git status
Tambahkan file yang ingin dimasukkan ke commit:
git add src/app.py
Buat commit:
git commit -m "Fix login validation"
Kemudian kirim ke remote repository:
git push
Jika bekerja dalam repository yang digunakan bersama tim, kita juga perlu memastikan branch lokal tetap mengikuti perubahan terbaru dari remote.
git pull
Untuk mengembangkan fitur secara terpisah, kita dapat membuat branch baru:
git switch -c feature-login
Setelah pekerjaan selesai, kembali ke branch utama:
git switch main
Kemudian gabungkan perubahan dari feature branch:
git merge feature-login
Dalam project yang lebih besar, workflow Git dapat menjadi lebih kompleks. Kita mungkin mulai menggunakan pull request, code review, rebase, release branch, atau CI/CD pipeline.
Namun konsep dasarnya tetap sama:
perubahan dimulai dari workspace, masuk ke staging area, disimpan dalam local repository, lalu dapat dibagikan melalui remote repository.
Memahami Alur Lebih Penting daripada Menghafal Command
Ketika pertama belajar Git, command seperti add,
commit, push, fetch, dan
pull sering terasa seperti perintah yang berdiri sendiri.
Setelah memahami workflow-nya, hubungan di antara command tersebut menjadi jauh lebih jelas.
git add masuk akal karena ada staging area.
git commit masuk akal karena Git menyimpan snapshot di local
repository.
git push dibutuhkan karena local repository dan remote repository
adalah dua tempat yang berbeda.
git fetch masuk akal karena perubahan dari remote dapat diambil
tanpa langsung mengubah working tree.
Pada akhirnya, belajar Git bukan hanya tentang menghafal command.
Pahami di mana perubahan berada, pahami ke mana perubahan ingin dipindahkan, dan biasanya command yang dibutuhkan akan mengikuti dengan sendirinya.
Git Bukan GitHub
Satu hal yang juga sering membingungkan ketika pertama belajar Git adalah menganggap Git dan GitHub sebagai hal yang sama.
Padahal keduanya berbeda.
Git adalah version control system. Git digunakan untuk mencatat perubahan, membuat commit, mengelola branch, membandingkan versi, dan menyimpan history sebuah project.
Git dapat bekerja sepenuhnya di komputer lokal tanpa GitHub.
GitHub adalah platform yang menyediakan hosting untuk Git repository sekaligus menyediakan berbagai fitur kolaborasi seperti pull request, issue tracking, code review, dan automation.
Artinya, kita tetap dapat menggunakan Git meskipun tidak menggunakan GitHub.
Repository Git dapat disimpan sepenuhnya di komputer lokal, di server sendiri, atau menggunakan layanan lain seperti GitLab dan Bitbucket.
Ketika kita menjalankan:
git add git commit git branch
kita sebenarnya sedang bekerja dengan Git, bukan GitHub.
GitHub mulai terlibat dalam workflow ketika repository Git kita menggunakan repository yang di-host di GitHub sebagai remote.
Misalnya ketika menjalankan:
git push git fetch git pull
command tersebut merupakan command Git. Git kemudian berkomunikasi dengan remote repository yang dalam contoh ini kebetulan berada di GitHub.
Jadi cara paling sederhana untuk membedakannya adalah:
Git adalah sistem version control-nya. GitHub adalah salah satu platform yang digunakan untuk menyimpan dan berkolaborasi menggunakan Git repository.
Kedengarannya sederhana, tetapi memahami perbedaan ini membantu menghindari salah kaprah yang cukup umum ketika pertama kali belajar Git.
Join the conversation