1. Clone Repository & Branch Default ๐ โ
Saat kita meng-clone sebuah repository, hanya akan menampilkan branch default (biasanya main atau master) yang akan otomatis di-checkout. Namun, branch lainnya hanya tersedia di remote repository.
Jika kita menjalankan perintah berikut setelah cloning:
git checkout devKemungkinan besar akan muncul error seperti ini:
error: pathspec 'dev' did not match any file(s) known to gitIni terjadi karena branch dev belum tersedia secara lokal hanya dengan clone saja. Kita perlu mengambil daftar branch dari remote dengan:
git fetch origin
# Fetch branch terbaru dari remote jika tidak terdeteksi
git fetch --all2. Membuat Branch Baru ๐ก โ
2.1. Membuat Branch Baru โ
- Perintah:bash
git branch nama-branch
2.2. Membuat Branch Baru dan Berpindah โ
- Perintah:bash
git checkout -b nama-branch git push -u origin nama-branch-bpada checkout berarti membuat dan berpindah ke branch baru.
2.3. Beralih ke Branch โ
Perintah:
bashgit checkout nama-branchAtau, untuk versi Git terbaru (>=2.23):
bashgit switch nama-branch
Catatan: Jika
devsudah ada di remote, Git akan otomatis membuat branch lokal dan melacaknya dari remote.
Selain branch main atau master tidak otomatis terbaca setelah cloning, kita perlu menjalankan git fetch dan git checkout atau git switch untuk mulai bekerja di branch tersebut. ๐
3. Remote di Git ๐ โ
Remote dalam Git adalah repositori yang tersimpan di server (misalnya di GitHub, GitLab, atau Bitbucket) yang digunakan untuk berbagi kode dengan tim atau menyimpan salinan repositori secara online.
Ketika kamu melakukan git push, perubahan dikirim dari repositori lokal ke remote repo. Contoh umum remote adalah origin, yang secara default mengacu pada repo yang di-clone dari GitHub.
4. Menjalankan git branch -r ๐ โ
Kamu harus menjalankan perintah ini di terminal atau command prompt dalam direktori repositori lokal yang telah di-clone atau diinisialisasi dengan Git.
Langkah-langkahnya:
Buka terminal (Command Prompt, Git Bash, atau terminal di VS Code atau IDE Editor lainnya).
Navigasi ke folder repositori dengan perintah:
bashcd path/to/repoContoh:
bashcd ~/Documents/testJalankan perintah untuk melihat branch remote:
bashgit branch -rJika branch
devsudah ada di remote, hasilnya mungkin seperti ini:origin/main origin/devJika hanya
origin/mainyang muncul, berarti branchdevbelum di-push ke remote.
5. Branch dev Belum Ada di Remote โ โ
Jika branch dev belum ada di remote, jalankan:
git push origin devPerintah ini akan mengunggah branch dev ke GitHub agar bisa diakses di komputer lain.
git push origin devhanya akan mendorong branchdevke remote (origin).- Tidak ada perubahan yang dikirim ke
main, karena tidak ada perintah merge atau rebase kemain. origin/maintetap seperti sebelumnya, kecuali kamu melakukan merge atau rebase ke branchmainsecara eksplisit.
6. Push Perubahan Branch dev pada main ๐ค โ
Langkah terbaik untuk menerapkan perubahan dari dev ke main tergantung pada apakah kamu bekerja sendiri atau dalam tim.
6.1. Jika Bekerja Sendiri (git merge) โ
- Pindah ke branch
main:bashgit checkout main - Pastikan branch
mainterbaru:bashgit pull origin main - Merge branch
devkemain:bashgit merge dev- Jika tidak ada konflik, perubahan akan langsung digabungkan.
- Jika ada konflik, selesaikan konflik secara manual lalu:bash
git commit -m "Resolve merge conflict"
- Push ke remote:bashSekarang,
git push origin mainmainsudah diperbarui dengan perubahan daridev.
6.2. Jika Bekerja dalam Tim (Pull Request di GitHub) โ
- Pastikan branch
devsudah di-push ke remote:bashgit push origin dev - Buat Pull Request:
- Buka repo di GitHub.
- Klik tombol "Compare & pull request".
- Pastikan base branch =
maindan compare branch =dev. - Tambahkan deskripsi perubahan dan klik "Create pull request".
- Review dan Merge:
- Diskusikan perubahan dengan tim jika perlu.
- Setelah siap, klik "Merge pull request" di GitHub.
- (Opsional) Hapus branch
devjika sudah tidak diperlukan.
- Sinkronisasi lokal dengan branch
mainterbaru:bashgit checkout main git pull origin main git merge dev git push origin main
7. Rollback Commit di Branch dev โช โ
7.1. Hard Reset (Menghapus Commit Secara Permanen) โ
git reset --hard <commit_id>
git push origin dev --forceCatatan: Menghapus commit sepenuhnya tanpa bisa dikembalikan.
7.2. Soft Reset (Hapus Commit Tapi Simpan Perubahan di Staging) โ
git reset --soft <commit_id>Catatan: Commit dihapus, tapi perubahan tetap ada untuk diedit ulang.
7.3. Revert (Membatalkan Commit Tanpa Menghapus Riwayat) โ
git revert HEAD # Membatalkan commit terakhir
git revert HEAD~1 # Membatalkan commit ke-2 terakhir
git push origin devCatatan: Cocok jika commit sudah di-push dan ingin menjaga riwayat commit tetap rapi.
8. Rollback di Branch main (Jika Terlanjur Merge dev) โช โ
8.1. Hard Reset (Menghapus Merge & Commit Setelahnya) โ
git reset --hard <commit_id>
git push origin main --forceCatatan: Menghapus perubahan secara permanen.
8.2. Revert Merge Tanpa Menghapus Riwayat โ
git revert -m 1 <commit_id_merge>
git push origin mainCatatan: Gunakan git log --oneline untuk mencari <commit_id_merge>.
Tabel Perbandingan:
| Metode | Efek | Kapan Digunakan? |
|---|---|---|
| Hard Reset | Hapus commit 2 & 3 secara permanen | Jika yakin tidak butuh commit 2 & 3 lagi |
| Soft Reset | Commit 2 & 3 dihapus tapi perubahan tetap ada | Jika ingin edit sebelum commit ulang |
| Revert | Membuat commit baru yang membatalkan commit 2 & 3 | Jika commit sudah di-push ke remote & ingin aman |
9. Menghapus Branch dev Setelah Merge ๐ฎ โ
Jika dev sudah tidak diperlukan setelah merge:
git branch -d dev # Hapus branch di lokal
git push origin --delete dev # Hapus branch di remote