Git Stash menyimpan perubahan sementara tanpa commit — seperti "menaruh di rak" untuk dikerjakan nanti.
Kapan pakai stash?
- Perlu pindah branch tapi pekerjaan belum selesai
- Ada bug urgent yang harus difix di branch lain
$ git stash # simpan perubahan
Saved working directory and index state WIP on main
$ git stash list # lihat daftar stash
stash@{0}: WIP on main: abc1234 last commit
$ git stash pop # ambil kembali & hapus dari stash
$ git stash apply # ambil kembali tapi tetap di stash
$ git stash drop stash@{0} # hapus stash tertentu
Gitignore — file .gitignore memberitahu Git file mana yang tidak perlu dilacak:
# Dependencies
node_modules/
vendor/
# Environment
.env
.env.local
# Build output
dist/
build/
# OS files
.DS_Store
Thumbs.db
# IDE
.vscode/
.idea/
Pattern .gitignore:
*.log— semua file berekstensi.logtemp/— foldertempdan isinya!important.log— pengecualian (tetap lacak file ini)**/debug.log— filedebug.logdi folder manapun
Tips: Buat
.gitignoresebelum commit pertama. File yang sudah pernah di-commit harus di-remove dulu dengangit rm --cached <file>.
Sekilas .gitattributes
Sementara .gitignore menentukan file yang diabaikan, .gitattributes mengatur bagaimana Git menangani file yang dilacak.
# normalisasi line ending: CRLF di Windows, LF di repo
* text=auto
# tandai file biner supaya diff tidak rusak
*.png binary
*.jpg binary
*.pdf binary
# strategi merge: selalu pakai versi kita untuk lockfile
package-lock.json merge=ours
*.lock merge=ours
# diff lebih rapi untuk bahasa tertentu
*.md diff=markdown
Kegunaan utama:
- Line ending normalization — hentikan chaos CRLF/LF antar OS
- Binary detection — mencegah Git mencoba diff file biner
- Merge strategy — otomatisasi resolusi untuk file yang sering konflik (lockfile, generated)
- Export ignore —
file export-ignoreuntuk mengecualikan darigit archive
Commit
.gitattributessedini mungkin. Setelah ada, jalankangit add --renormalize .sekali supaya normalisasi berlaku untuk file yang sudah di-commit.