Saya telah melihat pertanyaan serupa ( 1 , 2 dan 3 ), tetapi saya tidak mendapatkan solusi yang tepat dari mereka.
Saya perlu mengabaikan semua file di bawah folder tertentu kecuali untuk jenis file tertentu. Folder tersebut adalah subdirektori untuk jalur root. Biar saya beri nama foldernya Resources
. Karena saya tidak ingin mempersulit banyak hal, izinkan saya mengabaikan file di bawah semua folder yang diberi nama di Resources
mana pun itu.
Ini adalah solusi paling umum (di semua pertanyaan duplikat)
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore
!.gitignore
# Now exclude our type
!*.foo
Masalah dengan solusi ini adalah ia berhenti melacak file yang baru ditambahkan (karena *
mengabaikan semua file). Saya tidak ingin terus mengecualikan setiap jenis file. Saya ingin perilaku normal di mana jika ada file baru yang ditambahkan, git status
tunjukkan.
Saya akhirnya mendapat solusi di sini . Solusinya adalah menambahkan .gitignore
file lain ke dalam Resources
folder. Ini bekerja dengan benar.
Bisakah saya mencapai hal yang sama dengan satu file abaikan? Saya menemukan banyak mengabaikan file dalam direktori yang berbeda agak kikuk.
Inilah yang saya coba capai:
# Ignore everything under Resources folder, not elsewhere
Resources
# Don't ignore directories, so we can recurse into them
!*Resources/
# Now exclude our type
!*.foo
Tapi ini memberikan hasil yang berlawanan. Ini mengabaikan *.foo
jenis dan melacak file lain.
DirectoryName1/** DirectoryName1/**/*
untuk masing-masing. Pertama menghapus direktori tetapi Anda membutuhkan yang kedua untuk menghapus semua jenis file.Jawaban terbaik adalah dengan menambahkan file Resources / .gitignore di bawah Resources yang berisi:
Jika Anda tidak mau atau tidak dapat menambahkan file .gitignore itu, ada solusi yang tidak elegan:
Anda perlu mengedit pola itu jika Anda menambahkan direktori lebih dalam dari yang ditentukan.
sumber
Ini mungkin terlihat bodoh, tetapi periksa apakah Anda belum menambahkan folder / file yang ingin Anda abaikan ke indeks sebelumnya. Jika Anda melakukannya, tidak peduli apa yang Anda masukkan ke dalam file .gitignore Anda, folder / file tersebut akan tetap dipentaskan.
sumber
git rm --cached <path to files>
untuk menghapus file yang diabaikan tersebut dari git sambil tetap membiarkannya di sistem file.Entah saya salah melakukannya, atau jawaban yang diterima tidak lagi berfungsi dengan git saat ini.
Saya sebenarnya telah menemukan solusi yang tepat dan mempostingnya di bawah pertanyaan yang hampir sama di sini . Untuk lebih jelasnya kunjungi sana.
Larutan:
sumber
!/Resources/**/
itu sangat penting agar git tidak mengabaikan subdirektori.