Git mengabaikan file yang tidak ada di gitignore

117

Saya memiliki repositori git yang mengabaikan file gambar serta beberapa file lainnya, tetapi .gitignorefile saya hanya mengabaikan config.phpfile. Apakah ada file abaikan global di suatu tempat yang sepertinya tidak dapat saya temukan? Saya harus menentukan file untuk menambahkannya sekarang, dan ini memberi saya peringatan ini:

Jalur berikut diabaikan oleh salah satu file .gitignore Anda.

Isi ~/.gitconfigfile saya hanya alamat email saya.

Ian Hunter
sumber

Jawaban:

198

git check-ignore

Gunakan git check-ignoreperintah untuk men-debug file gitignore Anda (kecualikan file).

Sebagai contoh:

$ git check-ignore -v config.php
.gitignore:2:src    config.php

Rincian keluaran di atas tentang pola pencocokan (jika ada) untuk setiap nama jalur yang diberikan (termasuk baris).

Jadi mungkin ekstensi file Anda tidak diabaikan, tetapi seluruh direktori.

Format yang dikembalikan adalah:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

Atau gunakan perintah berikut untuk mencetak .gitignoredi HOME pengguna dan folder repositori Anda:

cat ~/.gitignore "$(git rev-parse --show-toplevel)"/.gitignore "$(git rev-parse --show-toplevel)"/.git/info/exclude

Atau gunakan git add -fyang memungkinkan menambahkan file yang diabaikan.

Lihat: man gitignore, man git-check-ignoreuntuk lebih jelasnya.

Sintaksis

git check-ignore [options] pathname…

git check-ignore [opsi] --stdin

kenorb
sumber
5
Ini jauh lebih baik daripada jawaban yang diterima. Jangan tersinggung untuk yang satu itu, tapi ini menyelamatkan hariku. Terima kasih kenorb.
luanjunyi
1
Pantas mendapat lebih banyak suara positif. Menemukan bahwa beberapa gitignore aneh di beberapa / vendor / folder menyebabkan masalah dengan versi git terbaru.
Manuel Arwed Schmidt
2
yang satu ini menyelamatkan saya hari ini ... tampaknya studio visual membuat file bernama gitignore_global.txt di folder dokumen pengguna dan ini mengabaikan file yang tidak dapat (tidak) saya abaikan
Samuel
1
Memecahkan masalah saya dengan sempurna. Beberapa pola tidak mudah terlihat !!
Willa
54

Sebaiknya diketahui bahwa konfigurasi git Anda dapat berisi core.excludesfile yang merupakan jalur ke file dengan pola tambahan yang diabaikan. Anda dapat mengetahui apakah Anda memiliki konfigurasi seperti itu dengan menjalankan (di repo git yang bermasalah):

git config core.excludesfile

Jika mencetak jalur file, lihat konten file itu untuk informasi lebih lanjut.

Dalam kasus saya, saya menginstal git melalui versi lama boxen yang mengabaikan pola 'Ikon?' bahwa dalam kasus saya memberi saya peringatan, yang disebutkan dalam pertanyaan ini, untuk ikon folder (Saya menggunakan sistem file yang tidak sensitif, itulah mengapa Ikon? mencocokkan ikon).

gabrielf
sumber
2
Ini memang masalah saya. Tidak yakin bagaimana atau kapan file ini diedit tetapi memiliki file yang saya inginkan tercantum di dalamnya
toxaq
2
Terima kasih, Anda menyelamatkan saya berjam-jam penderitaan murni. Dalam kasus saya, itu adalah instalasi pohon sumber (alat memvisualisasikan git repo) yang dibuat secara tidak logis di bawah folder dokumen gitignore_global.txt yang menyertakan banyak pengecualian.
Objek Mekanis
Aku juga Icon?mengabaikan hal yang sama .
Justin Skiles
Ini adalah kasus saya. Memiliki beberapa aturan di dalam file abaikan global. Terima kasih atas tip +1
Madness
Saya memiliki * .json dalam pengabaian global saya - berbicara tentang mimpi buruk - terima kasih!
Jason Perfetto
31

Lihat ini:

  1. Pernahkah Anda mencari file .gitignore lainnya, karena jumlahnya bisa banyak.

  2. Juga, lihat REPO / .git / config untuk melihat apakah ada sesuatu di sana.

  3. Repo exclude Local per-repo rules dapat ditambahkan ke file .git / info / exclude di repo Anda. Aturan ini tidak dilakukan dengan repo sehingga tidak dibagikan dengan orang lain. Metode ini dapat digunakan untuk file yang dibuat secara lokal yang tidak Anda harapkan akan dibuat oleh pengguna lain, seperti file yang dibuat oleh editor Anda.

gahooa
sumber
Tidak ada file .gitignore lain di repositori, juga tidak ada apa pun di file .git / config yang mengabaikan apa pun. Bagaimana .git / info / exclude dikonfigurasi?
Ian Hunter
4
Tidak jelas mengapa jawaban ini ditandai sebagai terjawab. Bagaimana tepatnya masalah ini diselesaikan?
Pengembang Berikutnya
mengecualikan adalah masalah saya. Saya tahu ada cara lain untuk mengabaikan, yang telah saya gunakan di masa lalu, tetapi saya lupa di mana itu!
Chucky
22

Saya memiliki masalah yang sama - direktori diabaikan oleh git dengan kesalahan ini:

➭ git add app/views/admin/tags/
The following paths are ignored by one of your .gitignore files:
app/views/admin/tags
Use -f if you really want to add them.
fatal: no files added

Saya akhirnya menemukan masalah saya adalah baris di saya ~/.gitignore_global:

TAGS

yang cocok dengan jalannya app/views/admin/tags. Saya memperbaikinya dengan menambahkan garis miring ke file gitignore global

/TAGS

dan git mulai melacak direktori saya lagi.

Shevaun
sumber
3
1 untuk membuat saya mencari kecocokan parsial ... gitignore_global.txt berisi "[Rr] elease * /" yang menyebabkan direktori "releasenotes" saya diabaikan.
Trev
Untuk membuatnya lebih sulit, git hanya akan mengabaikan file yang baru ditambahkan, bukan yang sudah ada di repo. Jadi, ketika saya menambahkan "foo /" ke .gitignore saya, itu hanya mengabaikan file yang baru saja ditambahkan di subdirektori foo dan tidak semua file. Butuh waktu satu jam untuk mencari tahu mengapa beberapa file diabaikan dan yang lainnya tidak.
ccleve
Saya memiliki masalah yang sama. Kumpulan SourceTree ~ / .gitignore_global file di menu Alat-> Opsi item-> tab Git. Setelah saya membersihkan bidang Global Ignore list "git add ..." perintah bekerja.
Kate
Saya memiliki masalah yang sama. Saya memiliki helpdirektori yang diabaikan. Untungnya saya menemukan jawaban Anda dengan cukup cepat.
Abdul Sadik Yalcin
9

Bagi saya, saya tidak sengaja memiliki wildcard di file ~ / .gitignore_global saya. Mungkin periksa di sana?


sumber
1
Itulah masalahnya bagi saya. Saya punya * .png di sana, tidak tahu bagaimana itu sampai di sana.
Shahar
3

Hal lain untuk dicoba: Saya memiliki direktori B dengan .gitrepositori sendiri yang bersarang di bawah direktori proyek saya A (tetapi bukan sebagai submodul). Saya membuat beberapa perubahan pada B, dan ingin membuatnya menjadi submodul bonafide. Saya yakin git A secara otomatis mengabaikan B karena berisi repositori sendiri (lihat Repositori git bersarang tanpa submodul? ). Saya mengganti nama folder B, dan mencoba mengkloningnya lagi sebagai submodul, dan itu membawa saya pesan kesalahan "diabaikan oleh .gitignore" yang menyesatkan. Solusinya adalah menghapus .gitB.

Matt Montag
sumber
2

Saya mengalami masalah yang sama persis dengan Anda. Satu-satunya jawaban yang Anda dapatkan mencantumkan beberapa tempat untuk diperiksa, tetapi tidak satupun yang memecahkan masalah bagi saya, dan dari komentar Anda, saya juga tidak memikirkannya untuk Anda. Saya tidak punya file .gitignore LAIN yang bersembunyi lebih rendah di pohon direktori; tidak ada di .git / config; tidak ada di .git / ingore / exclude

Jika Anda masih mengalami masalah, periksa jawaban ini . Itu memecahkan masalah saya

Pada dasarnya, periksa file ~ / .gitignore. Punyaku disebut ~ / .gitignore_global. Saya tidak tahu kapan itu dibuat ( saya pasti tidak membuatnya), tetapi saya mencoba banyak pengaturan git yang berbeda ketika saya pertama kali menginstal, jadi salah satu dari mereka pasti meletakkannya di sana.

Semoga jawabannya membantu Anda juga!

Bukov
sumber
1

Alasan lain untuk menerima pesan kesalahan ini dari git adalah ketika menjalankan git submodule addperintah sementara perintah git sebelumnya macet dan meninggalkan file kunci (ini dapat terjadi, misalnya, ketika Anda menggunakan skrip khusus yang menyertakan perintah git dan Anda belum mencatat jatuh).

Jika Anda menjalankan perintah git commitsebagai gantinya, sementara tidak ada kondisi yang berubah ( git submodule addakan terus berteriak bahwa .gitignorefile Anda yang harus disalahkan), Anda akan melihat laporan kesalahan lain sebagai gantinya:

$ git commit -a
fatal: Unable to create '..../.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

dan memang menghapus file kunci:

rm .git/index.lock

menyelesaikan masalah. (Ini terjadi pada git versi 2.1.0.9736. Ini mungkin diperbaiki pada rilis git mendatang.)

Ger Hobbelt
sumber
Terima kasih, ini ternyata masalah yang saya alami. Penolong!
JDawgg
1

Periksa apakah Anda memiliki izin ke folder tersebut. Saya baru saja mengalami ini dan itu karena folder itu dimiliki oleh pengguna data-www, bukan pengguna yang saya masuki ke terminal sebagai.

Conrad Jones
sumber
1

Dalam kasus saya, itu adalah garis miring di jalur saya yang menyebabkan masalah ...

Tidak bekerja

/srv/bootstrap/

Kerja

srv/bootstrap/
jwogrady.dll
sumber
1

Satu hal lagi: jika direktori tempat Anda berada memerlukan akses root untuk menulis atau menjalankan, pastikan Anda menggunakan pengguna root. Saya benar-benar mendapat kesalahan aneh di mana saya mencoba menambahkan submodule dan git terus mengeluh bahwa jalur yang saya kloning diabaikan oleh file git ignore. Kemudian saya berganti menjadi pengguna root, menjalankan penambahan submodule lagi, dan tidak ada masalah.

Maharlikans
sumber
0

Harap periksa juga ~/.gitignoredan ~/.gitignore_globalmana yang mungkin dibuat oleh beberapa klien Git (mis. Atlassian SourceTree di Mac OS X).

viviansteller.dll
sumber
0

Pastikan .gitignorefile tersebut tidak mengabaikan dirinya sendiri. Kesalahan umum adalah menambahkan *aturan ke .gitignorefile untuk mengabaikan setiap file di folder saat ini. Solusi untuk ini adalah menambahkan pengecualian ke .gitignore:

*
!.gitignore

Dengan cara ini semua file di direktori akan diabaikan, kecuali .gitignore.

jfoliveira
sumber