.gitignore semua file .DS_Store di setiap folder dan subfolder
561
Saya telah menambahkan .DS_Store ke file .gitignore, tetapi tampaknya itu hanya mengabaikan .DS_Store di direktori root, tidak di setiap folder dan subfolder.
Bagaimana tepatnya Anda menambahkannya ke .gitignore? Itu harus bekerja di semua direktori (tidak untuk saya).
Thilo
Ini bekerja untuk saya juga. Saya juga mencoba ketika itu di akhir file, jika Anda harus memiliki baris baru (platform spesifik) tetapi itu tidak mengubah direktori .DS_Store dalam bagian hierarki mana pun masih diabaikan.
enorl76
Pertanyaan yang saya pahami adalah: Cara mudah mengabaikan semua kemunculan .DS_Store di semua subdirektori tanpa melakukan ini secara manual di setiap subdirektori. Saya memiliki masalah yang sama. Jawaban di bawah ini menunjukkan cara menyelesaikannya (2 paragraf terakhir).
petrsyn
Jawaban:
648
Saya pikir masalah yang Anda alami adalah bahwa di beberapa komit sebelumnya, Anda secara tidak sengaja menambahkan .DS_Storefile ke repositori. Tentu saja, setelah file dilacak dalam repositori Anda, itu akan terus dilacak bahkan jika itu cocok dengan entri dalam file .gitignore yang berlaku.
Anda harus menghapus .DS_Storefile yang ditambahkan ke repositori Anda secara manual . Kamu bisa menggunakan
git rm --cached .DS_Store
Setelah dihapus, git harus mengabaikannya. Anda hanya perlu baris berikut di root .gitignoreberkas: .DS_Store. Jangan lupa haid!
git rm --cached .DS_Store
hanya menghapus .DS_Storedari direktori saat ini. Kamu bisa menggunakan
2 paragraf terakhir menjawab pertanyaan ini. Terima kasih.
petrsyn
70
´´git rm --cached .DS_Store´´ hanya menghapus satu .DS_Store dari direktori saat ini. Gunakan ´´find. -nama .DS_Store -print0 | xargs -0 git rm --ignore-unmatch´´ untuk menghapus semua .DS_Stores dari repo
auco
4
Daftar file-file umum lainnya untuk diabaikan mungkin berguna
geotheory
14
Gagasan buruk untuk menggunakan aturan global IMO: Mencoba mempertahankan konfigurasi global di banyak pengguna / mesin tidak pernah berfungsi - Anda ingin aturan yang mengatur repo Anda di repo itu sendiri. Setuju dengan ini
Yarin
15
Aku tidak setuju denganmu (Meskipun saya meningkatkan komentar Anda karena saya pikir itu berwawasan luas.) Jika kita melakukan global, maka setiap pengguna mac perlu melakukan itu, tetapi hanya sekali. Jika kita melakukan repositori lebar, maka kita perlu melakukan itu untuk setiap repositori. Saya tidak tahu tentang Anda, tetapi saya membuat repo baru sepanjang waktu. Dengan melakukannya secara global, seseorang memecahkan masalah sekali dan untuk semua.
Edward Newell
356
Tambahkan **/.DS_Storeke dalam .gitignoreuntuk sub direktori
Dan sekarang tambahkan .DS_Store ke file .gitignore Anda, dan kemudian komit dan dorong dengan 2 bagian terakhir dari kode (git commit ..., git push ...)
@MilanG adalah kata kunci yang pada dasarnya berarti 'pencarian di direktori ini dan semua subdirektori'.
lachie_h
1
Tidak yakin itu adalah penjelasan yang sempurna tentang apa arti tanda bintang ganda. Itu adalah wildcard. Bisa *atau **tergantung apa yang ingin Anda raih. Ini adalah cara memberi tahu shell cara menavigasi direktori. Jawaban stackoverflow ini menjelaskan sepenuhnya stackoverflow.com/a/28199633/4092170
Anda juga dapat menambahkan --cachedtanda pada jawaban auco untuk mempertahankan file .DS_store lokal, seperti yang disebutkan Edward Newell dalam jawaban aslinya. Perintah yang dimodifikasi terlihat seperti ini: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch..cheers dan terima kasih!
Jawaban:
Saya pikir masalah yang Anda alami adalah bahwa di beberapa komit sebelumnya, Anda secara tidak sengaja menambahkan
.DS_Store
file ke repositori. Tentu saja, setelah file dilacak dalam repositori Anda, itu akan terus dilacak bahkan jika itu cocok dengan entri dalam file .gitignore yang berlaku.Anda harus menghapus
.DS_Store
file yang ditambahkan ke repositori Anda secara manual . Kamu bisa menggunakanSetelah dihapus, git harus mengabaikannya. Anda hanya perlu baris berikut di root
.gitignore
berkas:.DS_Store
. Jangan lupa haid!hanya menghapus
.DS_Store
dari direktori saat ini. Kamu bisa menggunakanuntuk menghapus semua
.DS_Stores
dari repositori.Kiat tip: Karena Anda mungkin tidak ingin memasukkan
.DS_Store
file, buat aturan global. Pertama, buat.gitignore
file global di suatu tempat, misSekarang beri tahu git untuk menggunakannya untuk semua repositori:
Halaman ini membantu saya menjawab pertanyaan Anda.
sumber
Tambahkan
**/.DS_Store
ke dalam.gitignore
untuk sub direktoriJika
.DS_Store
sudah berkomitmen:Untuk mengabaikannya di semua repositori: (kadang-kadang diberi nama
._.DS_Store
)sumber
git rm --cached your_file
dulufind . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
, dari: stackoverflow.com/questions/18393498/…-f
diperlukan jika Anda memiliki file terbuka di folder relavent:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Jika .DS_Store tidak pernah ditambahkan ke repositori git Anda, cukup tambahkan ke file .gitignore Anda.
Jika Anda tidak memilikinya, buat file bernama
Di direktori root aplikasi Anda dan cukup tulis
Di dalamnya. Ini tidak akan pernah mengizinkan file .DS_Store menyelinap di git Anda.
Tetapi, jika sudah ada, tulis di terminal Anda:
kemudian komit dan dorong perubahan untuk menghapus .DS_Store dari repo jarak jauh Anda:
Dan sekarang tambahkan .DS_Store ke file .gitignore Anda, dan kemudian komit dan dorong dengan 2 bagian terakhir dari kode (git commit ..., git push ...)
sumber
*
atau**
tergantung apa yang ingin Anda raih. Ini adalah cara memberi tahu shell cara menavigasi direktori. Jawaban stackoverflow ini menjelaskan sepenuhnya stackoverflow.com/a/28199633/4092170File .gitignore Anda akan terlihat seperti ini:
Selama Anda tidak menyertakan garis miring, itu cocok dengan nama file di semua direktori. (dari sini )
sumber
git rm --cached path/to/file/here
Langkah 1, hapus semua
*.DS_store
file. Seseorang bisa berlaritapi ketahuilah bahwa itu
rm -f
bisa sedikit berbahaya jika Anda salah ketik! Langkah dua: tambahkanke .gitignore. Ini berhasil untuk saya!
sumber
Tambahkan
*.DS_Store
ke file .gitignore Anda. Itu bekerja untuk saya dengan sempurnasumber
Anda juga dapat menambahkan
--cached
tanda pada jawaban auco untuk mempertahankan file .DS_store lokal, seperti yang disebutkan Edward Newell dalam jawaban aslinya. Perintah yang dimodifikasi terlihat seperti ini:find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
..cheers dan terima kasih!sumber
Langkah: 1) Hapus file yang ada menggunakan perintah ini
Temukan . -nama .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Langkah: 2) Tambahkan .DS_Store di file .gitignore Anda
Langkah: 3) Komit perubahan Anda di .gitignore git tambahkan .gitignore git komit -m "dihapus .DS_Store"
sumber
$ git rm ./*.DS_Store
- hapus semua .DS_Store dari git$ echo \.DS_Store >> .gitignore
- abaikan .DS_Store di masa mendatangkomit & dorong
sumber