Mengapa .gitignore tidak mengabaikan file saya?

128

Lihat gambar di bawah. File .gitignore saya seharusnya mengabaikan semua file di src / dist, tetapi sebenarnya tidak.

masukkan deskripsi gambar di sini

Richard
sumber

Jawaban:

220

.gitignorehanya mengabaikan file yang belum menjadi bagian dari repositori. Jika Anda sudah git addmengedit beberapa file, perubahannya akan tetap terlacak. Untuk menghapus file-file itu dari repositori Anda (tetapi tidak dari sistem file Anda) gunakanlah git rm --cached.

Elmar Peise
sumber
9
git rm --cached file_name.ext baik-baik saja bagi saya untuk memperbarui gitignore untuk satu file. Terima kasih.
sybozz
3
Saya melakukan ini, tetapi GitHub masih ingin melacak dan menambahkannya.
Netside
94

File .gitignore memastikan bahwa file yang tidak dilacak oleh Git tetap tidak terlacak.

Hanya menambahkan folder / file ke file .gitignore tidak akan menghapusnya - mereka akan tetap dilacak oleh Git.

Untuk membuka file yang terlacak, Anda perlu menghapus file terlacak yang terdaftar dalam file .gitignore dari repositori. Kemudian tambahkan kembali dan lakukan perubahan Anda.

Cara termudah dan paling menyeluruh untuk melakukannya adalah dengan menghapus dan menyimpan semua file di repositori, lalu menambahkan semuanya kembali. Semua folder / file yang terdaftar dalam file .gitignore tidak akan terlacak. Dari folder teratas di repositori, jalankan perintah berikut:

git rm -r --cached . git add .

Kemudian lakukan perubahan Anda:

git commit -m "Untrack files in .gitignore"

Harap dicatat bahwa komit sebelumnya dengan file yang tidak diinginkan akan tetap ada dalam riwayat komit. Saat mendorong ke GitHub berhati-hatilah dengan riwayat komit yang mungkin berisi .envatau client_secret.jsonfile.

Praktik terbaiknya adalah membuat file .gitignore dan mengisinya dengan folder / file yang tidak ingin Anda lacak saat memulai proyek. Namun, sering kali perlu menambahkan file .gitignore setelah menyadari bahwa file yang tidak diinginkan sedang dilacak dan disimpan.

MarckK
sumber
Terima kasih atas jawabannya. Ini sangat membantu. Jangan lupa untuk meningkatkan repo hingga git
Chris Reed
Setelah menggunakan git rm -r --cached .mengembalikan semua perubahan juga berfungsi untuk menambahkan kembali semua file yang tidak boleh dikecualikan dengan .gitignore .
Adam Hurwitz
8

gitignore hanya mengabaikan file yang tidak terlacak. File Anda ditandai sebagai diubah - artinya file tersebut telah diubah dan sebelumnya serta sekarang dilacak oleh git.

Untuk mengabaikannya, Anda harus menghapusnya git rm, mengkomit, dan kemudian mengabaikannya terlebih dahulu.

Igal S.
sumber
7

Anda bisa menggunakan ini,

git rm -r --cached ./node_modules

jika Anda ingin mengabaikan node_modules, misalnya

sam r
sumber
4

Lihat ini: .gitignore tidak berfungsi Dan terutama komentar dari ADTC:

Pastikan file .gitignore Anda menggunakan encoding ANSI atau UTF-8. Jika ia menggunakan sesuatu yang lain seperti Unicode BOM, mungkin Git tidak dapat membaca file tersebut. - ADTC 14 Desember '17 pukul 12:39

Philippe Raemy
sumber
0

Pertama hapus file index.lock dari repo git Anda

rm -f .git/index.lock

lalu tambahkan .gitignore

git add .gitignore
KayV
sumber