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 cara saya memperbaikinya?
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 cara saya memperbaikinya?
Jawaban:
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
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
untuk menghapus semua .DS_Storesdari repositori.
Kiat tip: Karena Anda mungkin tidak ingin memasukkan .DS_Storefile, buat aturan global. Pertama, buat .gitignorefile global di suatu tempat, mis
echo .DS_Store >> ~/.gitignore_global
Sekarang beri tahu git untuk menggunakannya untuk semua repositori:
git config --global core.excludesfile ~/.gitignore_global
Halaman ini membantu saya menjawab pertanyaan Anda.
Tambahkan **/.DS_Storeke dalam .gitignoreuntuk sub direktori
Jika .DS_Storesudah berkomitmen:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Untuk mengabaikannya di semua repositori: (kadang-kadang diberi nama ._.DS_Store)
echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
git rm --cached your_filedulu
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch, dari: stackoverflow.com/questions/18393498/…
-fdiperlukan 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
.gitignore
Di direktori root aplikasi Anda dan cukup tulis
**/.DS_Store
Di dalamnya. Ini tidak akan pernah mengizinkan file .DS_Store menyelinap di git Anda.
Tetapi, jika sudah ada, tulis di terminal Anda:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
kemudian komit dan dorong perubahan untuk menghapus .DS_Store dari repo jarak jauh Anda:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
Dan sekarang tambahkan .DS_Store ke file .gitignore Anda, dan kemudian komit dan dorong dengan 2 bagian terakhir dari kode (git commit ..., git push ...)
*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
File .gitignore Anda akan terlihat seperti ini:
# Ignore Mac DS_Store files
.DS_Store
Selama Anda tidak menyertakan garis miring, itu cocok dengan nama file di semua direktori. (dari sini )
git rm --cached path/to/file/here
Langkah 1, hapus semua *.DS_storefile. Seseorang bisa berlari
git rm -f *.DS_Store
tapi ketahuilah bahwa itu rm -fbisa sedikit berbahaya jika Anda salah ketik! Langkah dua: tambahkan
*.DS_Store
.DS_Store
ke .gitignore. Ini berhasil untuk saya!
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!
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"
$ git rm ./*.DS_Store - hapus semua .DS_Store dari git$ echo \.DS_Store >> .gitignore - abaikan .DS_Store di masa mendatangkomit & dorong