guide

Aturan abaikan pribadi dengan .git/info/exclude

Cara menulis aturan pribadi yang hanya berlaku di satu repositori ke .git/info/exclude tanpa mengubah .gitignore, kapan berguna, dan prioritasnya.

.gitignore di-commit dan dibagikan ke semua orang. Namun kadang ada file yang hanya Anda ingin abaikan di repositori ini: catatan pribadi, skrip eksperimen, folder yang dibuat plugin editor Anda. Untuk itulah .git/info/exclude.

Letaknya

git init atau git clone otomatis membuat berkas .git/info/exclude. Isinya kosong, hanya beberapa baris komentar.

cat .git/info/exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# ...

Karena berada di dalam direktori .git, berkas ini tidak di-commit dan tidak dikirim ke siapa pun saat push. Sintaksnya sama persis dengan .gitignore. Untuk mengetahui lokasi pastinya, termasuk saat memakai beberapa worktree, jalankan git rev-parse --git-path info/exclude.

Kapan dipakai

SituasiContohTempat yang disarankan
File pribadi yang hanya dipakai di repositori ininotes.md, scratch/, todo.txt.git/info/exclude
File pribadi yang sama di semua repositori.DS_Store, *.swpgitignore global
Aturan yang dibutuhkan seluruh timnode_modules/, dist/, .env.gitignore

Terutama berguna saat berkontribusi ke repositori orang lain. Jika Anda mengubah .gitignore proyek untuk memblokir file dari alat Anda sendiri, peninjau mungkin tidak menginginkan perubahan itu. Dengan menulis ke .git/info/exclude, riwayat commit tidak tersentuh.

echo 'scratch/' >> .git/info/exclude
echo '.my-plugin-cache/' >> .git/info/exclude
git status   # tidak muncul lagi

Prioritas

Di antara sumber aturan, .git/info/exclude berada di bawah .gitignore dan di atas berkas global.

  1. Pola dari baris perintah
  2. .gitignore (berkas di subdirektori menimpa berkas di atasnya)
  3. .git/info/exclude
  4. core.excludesFile

Karena itu, file yang diabaikan .gitignore tidak bisa disertakan kembali dengan aturan ! di .git/info/exclude. Jika diperiksa langsung:

# .gitignore        : x
# .git/info/exclude : !x
$ git check-ignore -v x
.gitignore:1:x	x

Hal yang perlu diperhatikan

Referensi

← SebelumnyaMengatur gitignore global (core.excludesFile)