Ada beberapa file extensionless yang Anda tidak ingin mengabaikan: README, LICENSEatau COPYING, INSTALL, Makefiledll, meskipun Anda selalu dapat memaksa-menambahkannya dan kemudian mereka dilacak
Jakub Narębski
@JakubN point poin yang bagus. Saya telah memasukkannya dalam jawaban saya untuk visibilitas lebih.
Seperti komentar Jakub Narębski , Anda mungkin tidak ingin mengabaikan semua file tanpa ekstensi.
Saranku:
tambahkan dulu file tanpa ekstensi yang penting
lalu edit Anda .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:
Jawabannya benar sekali. Tapi mungkin yang lebih baik .gitignoreadalah **dan !**.*. Saya tahu ini tidak membuat perbedaan jika tanda bintang ditempatkan di depan, tetapi lebih eksplisit dan terdengar dengan cara cangkang menangani wildcard ...
Willem Van Onsem
7
Catatan: untuk bekerja dengan aturan pengecualian lainnya, ini harus menjadi kumpulan aturan pertama dalam file .gitignore Anda
Erik
Anda juga dapat memasukkan kembali file tanpa ekstensi tertentu misalnya dengan !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 !
mxmlnkn
1
**ditambahkan di Git 1.8.2. Apakah ada kerugian dari penggunaan !*/daripada !/**/?
mxmlnkn
@TamaMcGlinn Itu terlihat seperti regex: gitignore tidak mendukung regex.
VonC
50
*
!*/
!*.*
* 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.
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).
Tangkapan yang bagus. +1. Saya lupa memperbarui jawaban saya dengan aturan yang baru-baru ini saya gunakan di jawaban tambang lainnya. Saya telah memperbarui jawaban saya.
VonC
0
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
,LICENSE
atauCOPYING
,INSTALL
,Makefile
dll, meskipun Anda selalu dapat memaksa-menambahkannya dan kemudian mereka dilacakJawaban:
Anda dapat mencoba kombinasi yang mirip dengan:
Itu
gitignore
aturan 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:
.gitignore
seperti 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:
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:
Ini tidak akan berhasil di sini.
sumber
.gitignore
adalah**
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 Git1.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:
sumber
Di folder saya ada banyak file dengan
*.c, *.h, *.txt, *.csv
ekstensi dll. Dan file biner tanpa ekstensi apa pun. Jadi saya perlu mengabaikan semua file execpt*.c,*.h
dan.gitignore
, Jadi ini berfungsi untuk saya, dari.gitignore
contoh:sumber