Tidak suka iklan? Pergi Bebas Iklan Hari ini

.gitignore — File yang Mencegah Anda Menyimpan node_modules

Diterbitkan pada

Panduan praktis untuk .gitignore: apa yang dilakukan, cara sintaks bekerja, pola umum untuk node_modules dan file .env, serta perangkap yang sudah tercatat yang menangkap semua pengembang.

.gitignore — File yang menyelamatkan Anda dari mengcommit node_modules 1
IKLAN · HAPUS?

Setiap pengembang pernah melakukannya setidaknya sekali: secara tidak sengaja mengonfirmasi node_modules, .env file penuh dengan kunci API, atau artefak pembangunan sebesar 200MB. Kecemasan ini nyata. Perbaikannya melelahkan. Dan keseluruhan hal ini sepenuhnya dapat dihindari dengan satu file saja: .gitignore.

Panduan ini menjelaskan apa .gitignore adalah, bagaimana cara kerjanya, apa yang harus dimasukkan ke dalamnya, dan beberapa penangkapan yang menangkap bahkan pengembang berpengalaman.

Apa Itu .gitignore?

.gitignore adalah file teks sederhana yang memberi tahu Git mana file dan direktori yang harus dikecualikan dari pengendalian versi. Ketika Git melihat jalur yang terdaftar dalam .gitignore, ia memalsukan bahwa jalur tersebut tidak ada — ia tidak akan memasukkannya ke dalam tahap, mengonfirmasikannya, atau menampilkan di git status output.

File ini berada di akar repositori Anda, meskipun Anda juga dapat menempatkan file khusus proyek di direktori anak. Aturan dalam file di direktori anak hanya berlaku untuk direktori tersebut dan anak-anaknya. .gitignore Mengapa Anda Perlu Satu (Versi Singkat)

— menjaga rahasia, kunci API, dan kata sandi tidak masuk ke sejarah Git

  • Keamanan Ukuran repositori
  • — mencegah file yang dihasilkan dan ketergantungan membesar ukuran repositori Anda Pengurangan kebisingan
  • — menghentikan file konfigurasi editor dan sampah sistem operasi yang mengganggu setiap perbedaan Kesehatan tim
  • — setiap orang mengklon repositori bersih dan menginstal ketergantungan secara lokal Cara Sintaks Bekerja

Aturan-aturannya sederhana tetapi memiliki beberapa batas yang tidak jelas:

Baris kosong dan baris yang dimulai dengan

  • diabaikan (gunakan # untuk komentar) # Polanya tanpa garis miring
  • cocok dengan file atau direktori dengan nama tersebut di mana saja di repositori: mengabaikan setiap file log di setiap tingkat *.log Garis bawah di akhir
  • cocok hanya dengan direktori: mengabaikan direktori tetapi tidak mengabaikan file bernama dist/ Garis bawah di awal dist
  • mengunci pola ke akar repositori: hanya mengabaikan /todo.txt di akar yang sangat dasar todo.txt Dua bintang (
  • cocok di luar batas direktori:**) di mana saja di pohon **/logs mencocok logs/ Tanda seru (
  • menolak pola, mengembalikan file yang sebelumnya diabaikan!) Contoh Minimal

Entri yang Paling Umum (dan Mengapa Penting)

# Dependencies
node_modules/

# Environment files
.env
.env.local
.env.*.local

# Build output
dist/
build/

# Editor noise
.vscode/
.idea/
*.swp

# OS files
.DS_Store
Thumbs.db

# Logs
*.log
npm-debug.log*

node_modules/

Ini yang besar. Proyek Node.js biasanya memiliki ribuan file di

— sering kali ratusan megabyte. Tidak satupun dari itu termasuk dalam pengendalian versi. Siapa saja yang mengklon repositori Anda menjalankan node_modules/ dan membangunnya secara lokal dari npm install . Selalu abaikan itu. package.json.env dan file rahasia

File lingkungan menyimpan kata sandi database, kunci API, dan token layanan. File yang dikonfirmasi

adalah insiden keamanan yang menunggu terjadi — GitHub memindai rahasia yang terlepas, tetapi juga dilakukan oleh bot. Abaikan file tersebut, konfirmasi .env dengan nilai placeholder agar rekan kerja tahu variabel apa yang harus diatur. .env.example dist/ dan build/

Output yang dikompilasi atau dibundel diturunkan dari sumber. Pipelining CI Anda membangun ulang hal tersebut setiap kali di-deploy. Menyimpan artefak pembangunan menciptakan konflik penggabungan dan perbedaan palsu yang mengaburkan perubahan kode nyata.

File editor dan sistem operasi

(macOS),

.DS_Store (Windows), Thumbs.db (JetBrains), .idea/ (pengaturan VS Code) — ini adalah file ruang kerja pribadi. Menyimpannya memaksa preferensi Anda pada setiap kontributor lainnya. Gunakan global .vscode/ untuk kebisingan khusus mesin sehingga Anda tidak perlu menambahkannya ke setiap proyek. ~/.gitignore_global .gitignore global: Tetapkan Sekali, Lupakan

Anda dapat mengatur file abaikan global yang berlaku untuk setiap repositori di mesin Anda:

Letakkan file editor, sampah sistem operasi, dan alat pribadi di sana. Reservasi file proyek untuk hal-hal yang disetujui oleh seluruh tim — seperti

git config --global core.excludesfile ~/.gitignore_global

"Kebakaran yang Sudah Dikendalikan" .gitignore Ini adalah tempat pengembang terbakar: node_modules/ atau dist/.

hanya mencegah

file yang belum tercatat .gitignore dipindahkan. Jika file sudah ada di sejarah Git, menambahkannya ke tidak berpengaruh. Git tetap mengendalikannya dan akan tetap mengonfirmasi perubahan terhadap file tersebut. Untuk menghentikan pengendalian file yang sudah dikonfirmasi: .gitignore Setelah itu, file tetap ada di disk tetapi Git mengabaikannya ke depan.

Aturan Penolakan: Mengembalikan File

# Remove the file from git tracking without deleting it locally
git rm --cached path/to/file

# Or remove a whole directory
git rm -r --cached node_modules/

# Then commit the removal
git commit -m "Stop tracking node_modules"

Kadang-kadang Anda ingin mengabaikan direktori kecuali untuk satu file tertentu — misalnya, abaikan

tetapi tetap simpan

yang dikonfirmasi: config/ Satu hal: penolakan tidak dapat menghapus pengabaian file di dalam direktori yang diabaikan. Git berhenti menuruni direktori yang diabaikan, sehingga config/defaults.json aturan tidak pernah mendapatkan kesempatan untuk berjalan. Anda harus mengabaikan isi daripada direktori itu sendiri:

config/
!config/defaults.json

Menghasilkan .gitignore untuk Stack Anda ! Anda tidak perlu menulisnya dari awal.

# Wrong — Git never sees defaults.json inside an ignored directory
config/
!config/defaults.json

# Right — ignore everything in config/ except defaults.json
config/*
!config/defaults.json

gitignore.io

(juga di ) memungkinkan Anda memilih bahasa, kerangka kerja, dan editor Anda dan secara instan menghasilkan file abaikan yang komprehensif. GitHub juga menawarkan template resmi di repositori github/gitignore gitignore.io— template ini terus diperbaiki dan mencakup ratusan lingkungan. Untuk kebanyakan proyek web, titik awal yang kuat menggabungkan template untuk bahasa Anda (Node, Python, PHP, dll.), editor Anda (VS Code, JetBrains), dan sistem operasi Anda (macOS, Windows). Mengecek Apa yang Diabaikan oleh Git

Dua perintah membantu memperbaiki aturan abaikan yang tidak diharapkan:

sangat berguna ketika aturan tidak berfungsi seperti yang diharapkan — ia mencetak nama file, nomor baris, dan pola yang bertanggung jawab.

Referensi Cepat: Daftar Pola

# See which files are being ignored in the current directory
git status --ignored

# Find out exactly which rule is causing a file to be ignored
git check-ignore -v path/to/file

git check-ignore -v Apa yang Diabaikan

file di mana saja

PolaHanya
*.logSemua .log di akar
/debug.logSetiap direktori bernama debug.log direktori di setiap tingkat
logs/Mengembalikan logs
**/logslogs meskipun
!important.logcocok dengan itu important.log file secara langsung di dalam *.log (bukan subdirektori)
doc/*.txt.txt file di mana saja di bawah doc/ .gitignore — File yang Menyelamatkan Anda dari Menyimpan node_modules 2
doc/**/*.txt.txt .gitignore — File yang Menyelamatkan Anda dari Menyimpan node_modules 1 doc/
Ingin bebas iklan? Bebas Iklan Hari Ini

Instal Ekstensi Kami

Tambahkan alat IO ke browser favorit Anda untuk akses instan dan pencarian lebih cepat

Ke Ekstensi Chrome Ke Ekstensi Tepi Ke Ekstensi Firefox Ke Ekstensi Opera

Papan Skor Telah Tiba!

Papan Skor adalah cara yang menyenangkan untuk melacak permainan Anda, semua data disimpan di browser Anda. Lebih banyak fitur akan segera hadir!

IKLAN · HAPUS?
IKLAN · HAPUS?
IKLAN · HAPUS?

Pojok Berita dengan Sorotan Teknologi

Terlibat

Bantu kami untuk terus menyediakan alat gratis yang berharga

Belikan aku kopi
IKLAN · HAPUS?