// panduan praktis
GitHub via
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
powershell
# 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 → SettingsSSH and GPG keysNew 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
powershell
# 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
powershell
# 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
powershell
# 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
powershell
# 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
powershell
# 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
powershell
# 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
gitignore / umum (Windows + OS)
# 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
gitignore / Node.js
# 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/
gitignore / Python
# 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
gitignore / Electron
# Dependencies
node_modules/

# Build
dist/
out/
release/

# Environment
.env
.env.local
gitignore / WordPress
# 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
gitignore / React + Vite
# 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
powershell
# 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
powershell
# 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
powershell
# 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
powershell
# 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