Saya telah membuat daftar putih untuk file teks saja.
*
!*.txt
Sekarang, saya memiliki file teks yang tidak terlacak dalam sub-direktori - sub/dir/file.txt
, dan ini TIDAK ditampilkan (diabaikan). Namun, file teks di direktori root akan ditampilkan.
Mengapa demikian, dan bagaimana cara memperbaikinya?
.gitignore
.Jawaban:
Jika Anda mencobanya seperti itu, itu akan gagal, karena Anda akan berakhir dengan daftar hitam direktori dalam struktur Anda.
Untuk mengatasinya, Anda ingin memasukkan semua yang bukan direktori ke daftar hitam, dan bukan salah satu jenis file yang ingin Anda komit, sementara tidak memasukkan direktori ke daftar hitam .
The
.gitignore
file yang akan melakukan ini:Menguji ini dalam daftar putih struktur tiga tingkat untuk
.txt
file di hadapan*.one
,*.two
dan*.three
file menggunakan yang.gitignore
terletak di direktori akar repositori - berfungsi untuk saya. Anda tidak perlu menambahkan.gitignore
file ke semua direktori dalam struktur Anda.Informasi yang saya gunakan untuk mengetahui jawabannya berasal dari, antara lain, ini (stackoverflow.com).
sumber
!.gitignore
, saat menggunakan*
, bukan?/*
daftar hitam folder tingkat atas saja, tetapi tidak semua folder secara rekursif, yang sebenarnya berarti.gitignore
tidak boleh melihat ke subfolder folder yang masuk daftar putih.Cara yang lebih sederhana untuk mencapai ini adalah:
Ini berfungsi karena
gitignore
menerapkan pola yang tidak dimulai dengan/
setiap tingkat di bawah.gitignore
file:Jika Anda ingin melakukan ini ke file di dalam direktori , segalanya menjadi lebih kompleks:
Ini berfungsi karena
gitignore
memiliki aturan khusus untuk**
:Bagian kuncinya adalah memastikan Anda tidak mengabaikan direktori, karena setiap file di dalam direktori itu diabaikan terlepas dari aturan lainnya.
sumber
Saya mencari lama sekali:
Asumsikan saya memiliki struktur folder besar dengan ~ 100.000 direktori bersarang secara rekursif. Di folder-folder tersebut, ada sekitar 30.000 jenis file
.txt
(dalam kasus saya: type*.md
). Di samping*.md
file - file ini , ada, katakanlah, 500GB dari (satu juta +) file yang tidak ingin saya lacak.Saya ingin git hanya melacak
.txt
(atau*.md
) file di semua folder dan subdir.Jawaban yang benar seharusnya: ini tidak mungkin dilakukan di Git.
Yang saya lakukan sebagai gantinya:
[edit: juga tidak berfungsi - Saya mencoba membuat folder dengan symlink (atau hardlink) dan menggunakan git di sana, tetapi git tidak mengikuti symlink dan menimpa hardlink. Doh!]
sumber