Seperti judulnya, apakah mungkin untuk menambahkan "file tanpa titik di dalamnya" ke file gitignore?
Saya membayangkan ini akan mengurus semua file tanpa ekstensi yang mengganggu itu.
Seperti judulnya, apakah mungkin untuk menambahkan "file tanpa titik di dalamnya" ke file gitignore?
Saya membayangkan ini akan mengurus semua file tanpa ekstensi yang mengganggu itu.
Jawaban:
Anda dapat mencoba kombinasi yang mirip dengan:
*
!/**/
!*.*
Itu gitignoreaturan pengecualian (a pola menegasikan ) harus mengabaikan semua file, kecuali orang-orang dengan ekstensi.
Seperti disebutkan di bawah oleh Fisikawan Gila , aturannya adalah:
Tidak mungkin untuk memasukkan kembali file jika direktori induk dari file itu dikecualikan. (*)
(*: kecuali kondisi tertentu terpenuhi di git 2.?+, lihat di bawah)
Itulah mengapa !/**/penting (daftar putih folder induk secara rekursif) jika kita ingin file daftar putih.
Saya menyebutkan aturan yang sama dalam kasus serupa seperti:
Seperti komentar Jakub Narębski , Anda mungkin tidak ingin mengabaikan semua file tanpa ekstensi.
Saranku:
.gitignoreseperti yang ditunjukkan di atas: file yang sudah berversi tidak akan diabaikan (meskipun tidak memiliki ekstensi). Semua yang lain akan diabaikan.Untuk file tanpa ekstensi di masa mendatang yang ingin Anda buat versinya:
git add -f -- myFile
Perhatikan bahwa dengan git 2.9.x / 2.10 (pertengahan 2016?), Dimungkinkan untuk menyertakan kembali file jika direktori induk dari file tersebut dikecualikan jika tidak ada karakter pengganti di jalur yang disertakan ulang .
Nguyễn Thái Ngọc Duy ( pclouds) mencoba menambahkan fitur ini:
Namun, karena salah satu aturan untuk memasukkan kembali adalah:
Bagian direktori dalam aturan penyertaan ulang harus literal (yaitu tidak ada karakter pengganti)
Ini tidak akan berhasil di sini.
.gitignoreadalah **dan !**.*. Saya tahu ini tidak membuat perbedaan jika tanda bintang ditempatkan di depan, tetapi lebih eksplisit dan terdengar dengan cara cangkang menangani wildcard ...
!Makefile. Berhati-hatilah karena saya mengalami masalah dengan solusi ini di Git 1.7.1 sementara solusi ini berfungsi dengan baik di 1.9.0. Dalam kasus saya, menambahkan file di direktori root berfungsi dengan baik, tetapi menambahkan file dengan ekstensi di dalam subdirektori ditampilkan sebagai diabaikan. Ini sepertinya karena 1.7.1 belum mendukung **pola tersebut, lihat di sini !
**ditambahkan di Git 1.8.2. Apakah ada kerugian dari penggunaan !*/daripada !/**/?
*
!*/
!*.*
* memberitahu git untuk mengabaikan semuanya.
!*/kemudian tidak mengabaikan apa pun yang merupakan direktori. Ini penting.
!*.* tidak mengabaikan semua file dengan ekstensi.
Tanpa !*/aturan, direktori tanpa .nama tidak akan terdaftar dan tidak ada file yang Anda inginkan yang akan ditambahkan di luar folder root.
Sebagai referensi, baca dua bagian berikut dalam dokumentasi .gitignore yang menonjol:
Awalan opsional "!" yang meniadakan pola; file apa pun yang cocok yang dikecualikan oleh pola sebelumnya akan disertakan lagi. Tidak mungkin untuk memasukkan kembali file jika direktori induk dari file itu dikecualikan. Git tidak mencantumkan direktori yang dikecualikan untuk alasan kinerja, jadi pola apa pun pada file yang ditampung tidak akan berpengaruh, di mana pun mereka didefinisikan. Letakkan garis miring terbalik ("\") di depan yang pertama "!" untuk pola yang dimulai dengan "!" literal, misalnya, "! penting! .txt".
Jika pola diakhiri dengan garis miring, itu dihapus untuk tujuan deskripsi berikut, tetapi hanya akan menemukan kecocokan dengan direktori. Dengan kata lain, foo / akan cocok dengan direktori foo dan path di bawahnya, tetapi tidak akan cocok dengan file biasa atau link simbolik foo (ini konsisten dengan cara kerja pathspec secara umum di Git).
Di folder saya ada banyak file dengan *.c, *.h, *.txt, *.csvekstensi dll. Dan file biner tanpa ekstensi apa pun. Jadi saya perlu mengabaikan semua file execpt *.c,*.hdan .gitignore, Jadi ini berfungsi untuk saya, dari .gitignorecontoh:
*/* #ignore all files in each directory
!*/*.c #unignore .c files in each directory
!*/*.h #unignore .h header files in each directory
!.gitignore #unignore .gitignore
README,LICENSEatauCOPYING,INSTALL,Makefiledll, meskipun Anda selalu dapat memaksa-menambahkannya dan kemudian mereka dilacak