// panduan praktis
GitHub via
Terminal Windows
Terminal Windows
Panduan lengkap menghubungkan, mengelola, dan berkolaborasi menggunakan
Git & GitHub dari PowerShell atau Command Prompt di Windows 11.
Windows 11 Pro
PowerShell / CMD
Git 2.x+
Pilih topik untuk mulai belajar, atau ikuti urutan dari nomor 01.
Prerequisite: Pastikan Git sudah terinstall di Windows. Cek
dengan
git --version di terminal. Jika belum, download dari git-scm.com.
01 / LOGIN
Login & Koneksi
Setup SSH key, Personal Access Token, dan git config identity.
02 / INIT
Local Git Repository
Inisialisasi repo lokal dari folder yang sudah ada.
03 / REMOTE
Repo di GitHub
Buat repo baru di GitHub dan hubungkan ke repo lokal.
04 / TARIK
Clone & Pull
Ambil repo dari GitHub ke lokal: clone vs fetch vs pull.
05 / SYNC
Commit, Push & Lainnya
Workflow harian: add, commit, push, rm, reset, revert.
06 / IGNORE
.gitignore
Template umum dan spesifik untuk berbagai jenis proyek.
07 / BRANCH
Branching & Workflow
Branch, merge, rebase, stash, dan tag.
08 / REF
Cheat Sheet
Semua perintah penting dalam satu halaman referensi cepat.
01
Login & Koneksi ke GitHub
Dua metode: SSH Key (disarankan) atau Personal Access Token (HTTPS)
A. Konfigurasi Identitas Git (Wajib)
Set nama dan email — muncul di setiap commit WAJIB PERTAMA
# Ganti dengan nama dan email akun GitHub kamu git config --global user.name "Nama Kamu" git config --global user.email "email@kamu.com" # Verifikasi git config --list # Set default branch name ke 'main' git config --global init.defaultBranch main
B. Metode SSH (Rekomendasi)
Mengapa SSH? Tidak perlu input password setiap push. Lebih
aman karena pakai key pair, bukan password. Ideal untuk penggunaan harian
dan CI/CD.
1
Generate SSH Key baru
Jalankan di PowerShell. Tekan Enter saja jika ditanya lokasi file
(default). Isi passphrase atau kosongkan.
CMD
ssh-keygen -t ed25519 -C "email@kamu.com" # Jika komputer lama, gunakan rsa: # ssh-keygen -t rsa -b 4096 -C "email@kamu.com"
2
Tambahkan key ke ssh-agent
CMD
# Start ssh-agent (PowerShell sebagai Admin jika perlu) Get-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent # Tambahkan private key ssh-add ~/.ssh/id_ed25519
3
Salin Public Key ke GitHub
CMD
# Tampilkan public key, lalu copy hasilnya cat ~/.ssh/id_ed25519.pub # Atau langsung copy ke clipboard: Get-Content ~/.ssh/id_ed25519.pub | clip
GitHub → Settings → SSH and GPG keys → New SSH key → Paste → Save.
4
Test koneksi
CMD
ssh -T git@github.com # Output yang benar: Hi username! You've successfully authenticated, but GitHub does not provide shell access.
C. Metode HTTPS + Personal Access Token
HTTPS sekarang membutuhkan PAT. Sejak 2021, GitHub menolak
password biasa untuk operasi Git via HTTPS. Wajib pakai Personal Access Token
sebagai pengganti password.
Setup credential manager HTTPS
# Aktifkan credential manager Windows (sudah default di Windows) git config --global credential.helper manager # Saat pertama push/clone via HTTPS, Git akan minta login. # Masukkan username GitHub + PAT sebagai password. # Token dibuat di: GitHub → Settings → Developer Settings # → Personal Access Tokens → Tokens (classic) → Generate new token # Centang: repo, workflow (sesuai kebutuhan)
02
Local Git Repository
Inisialisasi Git di folder lokal yang sudah ada atau folder baru
1
Navigasi ke folder project
CMD
# Masuk ke folder yang sudah ada cd C:\Projects\nama-project # Atau buat folder baru dulu mkdir C:\Projects\nama-project cd C:\Projects\nama-project
2
Inisialisasi Git
CMD
git init # Output: Initialized empty Git repository in C:/Projects/nama-project/.git/ # Cek status awal git status
Perintah
git init membuat folder tersembunyi .git/ di direktori tersebut. Jangan hapus folder ini — isinya adalah seluruh
history repository.
3
Buat file pertama dan commit awal
CMD
# Buat README echo "# Nama Project" > README.md # Tambahkan ke staging git add README.md # Commit pertama git commit -m "initial commit" # Pastikan branch bernama 'main' (bukan 'master') git branch -M main
Memahami 3 Area Git
Working Directory
File yang kamu edit langsung di folder project. Perubahan di sini berstatus "unstaged". git status ← lihat ini
Staging Area (Index)
Area antara sebelum commit. File yang sudah git add masuk ke sini, siap di-commit. git add . ← masuk staging
Repository (Local & Remote)
Setelah git commit: perubahan masuk ke local repository (.git/). Setelah git push: perubahan naik ke remote repository (GitHub). Working Dir →[git add]→ Staging →[git commit]→ Local Repo →[git push]→ GitHub
03
Membuat Repo di GitHub
Buat dari web GitHub, lalu hubungkan ke repo lokal yang sudah ada
Langkah di Website GitHub
1
Buat repo baru di GitHub.com
Buka github.com → klik tombol + di kanan atas → New repository. Isi nama repo, pilih Public/Private. JANGAN centang "Add a README file" jika repo lokal sudah ada isinya.
2
Hubungkan repo lokal ke GitHub
CMD
# Jika pakai SSH (rekomendasi): git remote add origin git@github.com:username/nama-repo.git # Jika pakai HTTPS: git remote add origin https://github.com/username/nama-repo.git # Verifikasi remote terdaftar git remote -v # Push pertama kali dan set upstream git push -u origin main
Flag
-u (upstream) hanya perlu sekali. Setelah itu, cukup
git push tanpa parameter tambahan.
Manajemen Remote
git remote -v
Lihat daftar semua remote yang terdaftar
git remote add upstream <url>
Tambah remote lain (misal repo original fork)
git remote rename origin baru
Ganti nama remote dari 'origin' ke 'baru'
git remote remove origin
Hapus remote (repo lokal tetap aman)
git remote set-url origin <url-baru>
Ganti URL remote (misal pindah dari HTTPS ke SSH)
Pindah dari HTTPS ke SSH
Ganti remote URL yang sudah ada TIPS
# Cek URL saat ini git remote -v # Ganti ke SSH git remote set-url origin git@github.com:username/nama-repo.git # Verifikasi git remote -v
04
Tarik Data dari GitHub
Clone repo baru, atau update repo lokal yang sudah ada
Clone — Untuk Repo Baru
Download repo dari GitHub ke lokal CMD
# Clone via SSH (rekomendasi) git clone git@github.com:username/nama-repo.git # Clone via HTTPS git clone https://github.com/username/nama-repo.git # Clone ke folder dengan nama custom git clone git@github.com:username/nama-repo.git nama-folder-lokal # Clone hanya branch tertentu git clone -b develop git@github.com:username/nama-repo.git # Clone shallow (history terbatas, lebih cepat) git clone --depth=1 git@github.com:username/nama-repo.git
Fetch vs Pull — Perbedaan Penting
git fetch AMAN
# Download perubahan tapi TIDAK merge # ke working directory kamu. # Aman — file lokal tidak berubah. git fetch origin # Lihat apa yang berbeda setelah fetch git log HEAD..origin/main --oneline # Merge manual setelah siap git merge origin/main
git pull MERGE OTOMATIS
# fetch + merge sekaligus. # Langsung update working directory. git pull # Pull dengan rebase (lebih bersih) git pull --rebase # Pull dari branch tertentu git pull origin main
Best practice: Gunakan
git fetch dulu, review
perubahannya, baru git merge. Atau gunakan git pull --rebase agar history lebih linear dan bersih.
05
Commit, Push & Perintah Penting
Workflow harian dan perintah manajemen perubahan
Workflow Harian Standar
Urutan kerja yang benar WORKFLOW
# 1. Cek status perubahan git status # 2. Lihat detail perubahan git diff # unstaged changes git diff --staged # staged changes (sudah git add) # 3. Stage file (tambah ke staging) git add nama-file.txt # file tertentu git add . # semua perubahan # 4. Commit git commit -m "feat: tambah fitur login" git commit -am "fix: perbaiki bug validasi" # add+commit sekaligus (file tracked) # 5. Push ke GitHub git push # push ke upstream yang sudah di-set git push origin main # push eksplisit
Perintah git add
git add .
Stage semua perubahan (baru, modifikasi, hapus)
git add -p
Stage interaktif — pilih bagian per bagian (hunk)
git add -u
Stage file yang sudah tracked saja (tidak include file baru)
git restore --staged <file>
Unstage file (keluarkan dari staging, perubahan tetap ada)
Perintah git rm
git rm file.txt
Hapus file dari repo DAN dari disk (working dir)
git rm --cached file.txt
Hapus dari tracking Git saja — file tetap ada di disk. Berguna untuk
file yang terlanjur ter-commit tapi harusnya di .gitignore
git rm -r --cached folder/
Hapus folder dari tracking secara rekursif (file tetap di disk)
Contoh: hapus node_modules dari tracking COMMON
# Kasus: node_modules sudah terlanjur di-commit git rm -r --cached node_modules/ # Pastikan node_modules ada di .gitignore git add .gitignore git commit -m "chore: remove node_modules from tracking" git push
Undo & Perbaikan
git restore <file>
Batalkan perubahan di working dir (kembali ke commit terakhir)
git restore --staged <file>
Unstage file tanpa kehilangan perubahan
git commit --amend -m "pesan baru"
Edit pesan commit terakhir (sebelum push)
git revert <commit-hash>
Buat commit baru yang membalik perubahan commit lama (aman, cocok
untuk kolaborasi)
git reset --hard HEAD~1
BERBAHAYA: hapus commit terakhir dan buang perubahannya permanen
git reset --soft HEAD~1
Batalkan commit terakhir tapi perubahan tetap di staging (aman)
Melihat History
git log
Log commit lengkap
git log --oneline --graph
Log ringkas dengan visualisasi branch
git log --author="Nama"
Filter log berdasarkan penulis
git show <commit-hash>
Detail perubahan di satu commit
Push Lanjutan
Opsi push yang perlu diketahui
# Push branch baru (pertama kali) git push -u origin feature/login # Push paksa (HATI-HATI — bisa overwrite history orang lain) git push --force-with-lease # lebih aman dari --force # Delete branch di remote git push origin --delete nama-branch # Push semua branch git push --all origin
06
.gitignore
Template untuk berbagai jenis proyek — pilih dan kombinasikan sesuai
kebutuhan
File
.gitignore diletakkan di root folder project. Pola yang
ditulis di sana berlaku untuk folder itu dan subfolder-nya. Bisa juga buat
.gitignore per subfolder untuk aturan yang lebih spesifik.
Sintaks .gitignore
Pola-pola dasar
# Ini komentar secrets.txt # ignore file bernama secrets.txt di mana pun /secrets.txt # ignore HANYA di root folder build/ # ignore seluruh folder bernama build/ *.log # ignore semua file dengan ekstensi .log **/*.log # ignore .log di semua subfolder !important.log # PENGECUALIAN: jangan ignore important.log doc/**/*.pdf # ignore .pdf di dalam folder doc/ dan subfoldernya
Template berdasarkan Jenis Proyek
Umum
Node.js
Python
Electron
WordPress
React/Vite
# Windows Thumbs.db ehthumbs.db Desktop.ini $RECYCLE.BIN/ *.lnk # macOS (kalau kolaborasi dengan Mac) .DS_Store .AppleDouble .LSOverride # Editor .vscode/ .idea/ *.suo *.user *.swp *~ # Log & temp *.log *.tmp *.temp logs/ # Environment variables — JANGAN PERNAH commit ini! .env .env.local .env.*.local .env.production
# Dependencies node_modules/ .pnp .pnp.js # Build output dist/ build/ out/ .next/ .nuxt/ # Cache .npm .eslintcache .node_repl_history *.tsbuildinfo # Environment .env .env.local .env.development.local .env.test.local .env.production.local # Coverage coverage/ .nyc_output/
# Virtual environments venv/ .venv/ env/ .env/ ENV/ # Python cache __pycache__/ *.py[cod] *$py.class *.pyc *.pyo .Python # Build & dist dist/ build/ *.egg-info/ .eggs/ *.egg # Testing & coverage .pytest_cache/ .coverage .coverage.* htmlcov/ # Jupyter .ipynb_checkpoints/ # Environment .env *.env .secrets
# Dependencies node_modules/ # Build dist/ out/ release/ # Environment .env .env.local
# Core WordPress /wp-admin/ /wp-includes/ /wp-content/uploads/ /wp-content/upgrade/ # Config wp-config.php # Plugins (install via Composer atau manual) /wp-content/plugins/ # Themes (kecuali custom theme sendiri) /wp-content/themes/twenty*/ # Environment .htaccess /.env
# Dependencies node_modules/ # Build dist/ build/ # Vite .vite/ # Environment .env .env.local .env.*.local
07
Branching & Workflow
Branch, merge, rebase, stash, dan tag
Branch Dasar
Membuat dan berpindah branch CMD
# Lihat daftar branch lokal git branch # Buat branch baru git branch feature/login # Pindah ke branch (classic) git checkout feature/login # Buat + pindah sekaligus (cara modern) git switch -c feature/login # Kembali ke branch sebelumnya git switch - # Hapus branch lokal git branch -d feature/login
Merge
Menggabungkan branch CMD
# Pastikan di branch tujuan (misal main) git switch main # Merge branch fitur ke main git merge feature/login # Jika conflict: # 1. Edit file yang conflict # 2. git add file-yang-selesai # 3. git commit (tanpa -m, Git akan buat merge commit) # Abort merge jika terlalu rumit git merge --abort
Stash — Simpan Perubahan Sementara
Menyimpan perubahan tanpa commit CMD
# Simpan perubahan sementara git stash # Simpan dengan pesan git stash push -m "WIP: fitur login" # Lihat daftar stash git stash list # Ambil stash terakhir (dan hapus) git stash pop # Ambil stash tertentu tanpa hapus git stash apply stash@{2} # Hapus stash tertentu git stash drop stash@{1}
Tag — Menandai Versi
Buat dan push tag CMD
# Buat annotated tag (disarankan) git tag -a v1.0.0 -m "Rilis pertama" # Lihat daftar tag git tag # Push tag ke GitHub git push origin v1.0.0 # Push semua tag git push --tags # Hapus tag lokal git tag -d v1.0.0 # Hapus tag di remote git push origin --delete v1.0.0
Branch Workflow Rekomendasi
1
Pull latest main
Mulai dari branch main yang up-to-date.
CMD
git switch main git pull
2
Buat branch fitur
CMD
git switch -c feat/fitur-baru
3
Commit & push teratur
CMD
git add . git commit -m "feat: ..." git push -u origin feat/fitur-baru
Buat PR di GitHub → New Pull Request → pilih base:main ←
compare:feat/fitur-baru. Minta review, merge setelah approved.
08
Cheat Sheet Lengkap
Semua perintah penting dalam satu halaman referensi cepat
Setup & Konfigurasi
git config --global user.name "Nama"
Set nama global
git config --global user.email "email@kamu.com"
Set email global
git config --global init.defaultBranch main
Default branch ke main
git config --list
Lihat semua konfigurasi
Mulai Repo
git init
Inisialisasi repo baru
git clone <url>
Clone repo dari remote
git clone -b <branch> <url>
Clone branch spesifik
git clone --depth=1 <url>
Shallow clone (lebih cepat)
git remote add origin <url>
Tambah remote origin
Perubahan Harian
git status
Cek status perubahan
git diff
Lihat perubahan (unstaged)
git diff --staged
Lihat perubahan (staged)
git add .
Stage semua perubahan
git commit -m "pesan"
Commit perubahan
git commit -am "pesan"
Add + commit (tracked files)
git push
Push ke remote
git push -u origin main
Push + set upstream
git pull
Fetch + merge
git pull --rebase
Fetch + rebase (history lebih bersih)
Branch & Merge
git branch
Lihat daftar branch
git branch <nama>
Buat branch baru
git switch -c <nama>
Buat + pindah branch
git merge <branch>
Merge branch ke current
git branch -d <nama>
Hapus branch lokal
git stash
Simpan perubahan sementara
git stash pop
Ambil stash terakhir
Undo & Perbaikan
git restore <file>
Batalkan perubahan (unstaged)
git restore --staged <file>
Unstage file
git commit --amend -m "msg"
Edit commit message terakhir
git revert <hash>
Balikkan commit (aman)
git reset --hard HEAD~1
BERBAHAYA: buang commit & perubahan
git reset --soft HEAD~1
Uncommit, keep changes di staging
git rm --cached <file>
Hapus dari tracking saja
Log & History
git log --oneline --graph
Log ringkas dengan graph
git log --author="Nama"
Filter by author
git show <hash>
Detail satu commit
Remote
git remote -v
Daftar remote
git fetch origin
Fetch perubahan remote
git push --force-with-lease
Force push yang lebih aman
git push origin --delete <branch>
Hapus branch remote
Tag
git tag -a v1.0 -m "msg"
Buat annotated tag
git push origin v1.0
Push tag ke remote
git tag -d v1.0
Hapus tag lokal