ke file .gitignore, yang dapat ditemukan di tingkat atas repositori Anda (atau dibuat jika belum ada di sana). Anda dapat melakukan ini dengan mudah dengan perintah ini di direktori teratas
Ini benar-benar sepele, tetapi menggunakan -execakan diluncurkan git-rmsekali untuk setiap file .DS_Store, sementara xargsakan meletakkan semua jalur pada satu baris perintah. Kebanyakan saya lebih suka xargskarena saya tidak perlu khawatir melarikan diri banyak karakter khusus.
benzado
8
Ini harus menggunakan .git / info / mengecualikan, bukan .gitignore. Lihat stackoverflow.com/questions/1753070/… untuk penjelasan perbedaan keduanya.
Andrew Grimm
106
@Andrew: Saya tidak setuju. Ini tidak akan pernah berguna untuk file .DS_Store untuk diperiksa, sehingga lebih masuk akal sebagai pengaturan semua-pengguna, lebar-repositori, daripada sesuatu yang perlu diingat setiap pengguna Mac untuk mengatur pada mesinnya sendiri.
benzado
51
Apakah menambahkan .DS_Storeuntuk .gitignorebekerja secara rekursif? Yaitu, apakah itu akan diabaikan some/level/of/folders/.DS_Storejuga?
Charlie Schliesser
70
@CharlieS Ya, jika polanya tidak mengandung garis miring, cocok dengan nama file di semua direktori.
benzado
239
Menggabungkan jawaban benzado dan webmat, memperbarui dengan git rm, tidak gagal pada file yang ditemukan tidak dalam repo, dan menjadikannya dapat di-paste secara umum untuk setiap pengguna:
# remove any existing files from the repo, skipping over ones not in repo
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
# specify a global exclusion list
git config --global core.excludesfile ~/.gitignore
# adding .DS_Store to that list
echo .DS_Store >> ~/.gitignore
Saya menemukan bahwa ketika menggunakan git repo di direktori home saya (AKA a "dotfiles" repo), memiliki ~/.gitignoresebagai global tidak termasuk file saya sangat menyebalkan . Ada file yang ingin saya kecualikan dari direktori home saya yang tidak ingin saya abaikan secara global. Saya menggunakan ~/.gitexcludessebaliknya melalui arahan yang sama:core.excludesfile
AL X
156
Solusi terbaik untuk mengatasi masalah ini adalah dengan mengabaikan file-file ini dari semua git repo di sistem Anda. Ini dapat dilakukan dengan membuat file global gitignore seperti:
vi ~/.gitignore_global
Menambahkan Aturan untuk mengabaikan file seperti:
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
Sekarang, tambahkan file ini ke konfigurasi global git Anda:
Anda juga bisa menambahkan aturan di atas di .gitignore repositori Anda. Ini akan menjauhkan file-file ini pada level repo jika ada banyak kontributor untuk proyek Anda. Namun, dalam kasus seperti itu, .gitignore harus menangani file spesifik setiap OS, dll. Jika pengembang yang berbeda menggunakan OS yang berbeda. Seperti aturan untuk linux, OSX dll.
Saraf
Saya akan merekomendasikan bahwa setiap pengembang berurusan dengan file spesifik os-nya di .global_ignore sendiri, dengan cara itu proyek .gitignore adalah spesifik proyek.
mcfedr
harus dijalankan: git add .gitignore_global, agar programmer lain memiliki file itu juga di lingkungan lokalnya?
stackdave
58
Dalam beberapa situasi Anda mungkin juga ingin mengabaikan beberapa file secara global. Bagi saya, .DS_Store adalah salah satunya. Begini caranya:
nano .gitignoremembuat file jika tidak ada, perintah ini harus dijalankan dari folder root proyek
Saif
17
Jawaban pilihan teratas memang luar biasa, tetapi membantu pemula seperti saya, berikut adalah cara membuat file .gitignore, mengeditnya, menyimpannya, menghapus file yang mungkin sudah Anda tambahkan ke git, lalu mendorong file ke Github.
Buat file .gitignore
Untuk membuat file .gitignore, Anda bisa hanya touchfile yang membuat file kosong dengan nama yang ditentukan. Kami ingin membuat file bernama .gitignore sehingga kami dapat menggunakan perintah:
touch .gitignore
Abaikan file
Sekarang Anda harus menambahkan baris yang memberitahu git untuk mengabaikan file DS Store ke .gitignore Anda. Anda dapat menggunakan editor nano untuk melakukan ini.
nano .gitignore
Nano itu baik karena itu berisi instruksi tentang cara keluar dari situ. ( Ctrl- Ountuk menyimpan, Ctrl- Xuntuk keluar)
Salin dan tempel beberapa ide dari inti Github ini yang mencantumkan beberapa file umum yang harus diabaikan. Yang paling penting, untuk menjawab pertanyaan ini, adalah:
# OS generated files #
######################
.DS_Store
.DS_Store?
# Adalah komentar, dan akan membantu Anda mengatur file Anda seiring bertambahnya.
Ini artikel Github juga memiliki beberapa ide umum dan pedoman.
Hapus file yang sudah ditambahkan ke git
Akhirnya, Anda harus benar-benar menghapus file DS Store dari direktori Anda.
Gunakan perintah hebat ini dari jawaban pilihan teratas. Ini akan melalui semua folder di direktori Anda, dan menghapus file-file itu dari git.
hapus menggunakan git-rm, dan kemudian tambahkan .DS_Store .gitignoreuntuk menghentikannya ditambahkan lagi. Anda juga dapat menggunakan blueharvest untuk menghentikan mereka dibuat secara bersamaan
Berikut ini bekerja paling baik untuk saya. Menangani file yang tidak cocok, dan file dengan modifikasi lokal. Sebagai referensi, ini ada di sistem Mac 10.7 yang menjalankan git 1.7.4.4.
Saya agak terlambat ke pesta, tapi saya punya jawaban yang bagus. Untuk menghapus file .DS_Store, gunakan perintah berikut dari jendela terminal, tetapi berhati-hatilah menghapus file dengan 'find'. Menggunakan nama tertentu dengan opsi -nama adalah salah satu cara yang lebih aman untuk menggunakannya:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Anda dapat mengabaikan "-delete" jika Anda hanya ingin daftar mereka sebelum dan sesudah. Itu akan meyakinkan Anda bahwa mereka pergi.
Sehubungan dengan saran ~ / .gitignore_global: hati-hati di sini. Anda ingin menempatkan file yang bagus ke .gitignore di tingkat atas setiap workarea dan komit, sehingga siapa pun yang mengkloning repo Anda akan mendapatkan manfaat dari penggunaannya.
Ada beberapa solusi untuk menyelesaikan masalah ini. Untuk menghindari membuat file .DS_Store, jangan gunakan OS X Finder untuk melihat folder. Cara alternatif untuk melihat folder adalah dengan menggunakan baris perintah UNIX. Untuk menghapus file .DS_Store, produk pihak ketiga yang disebut DS_Store Terminator dapat digunakan. Untuk menghapus file .DS_Store dari seluruh sistem, perintah UNIX shell dapat digunakan. Luncurkan Terminal dari Aplikasi: Utilitas Pada UNIX shell prompt masukkan perintah UNIX berikut: sudo find / -name ".DS_Store" -depth -exec rm {} \; Saat diminta kata sandi, masukkan kata sandi Administrator Mac OS X.
Perintah ini adalah untuk menemukan dan menghapus semua kemunculan .DS_Store mulai dari root (/) dari sistem file melalui seluruh mesin. Untuk mengkonfigurasi perintah ini agar dijalankan sebagai tugas terjadwal, ikuti langkah-langkah di bawah ini: Luncurkan Terminal dari Aplikasi: Utilitas Pada prompt UNIX shell masukkan perintah UNIX berikut:
sudo crontab -e Saat diminta kata sandi, masukkan kata sandi Administrator Mac OS X. Setelah di vi editor tekan huruf I pada keyboard Anda sekali dan masukkan yang berikut ini:
Jawaban:
Hapus file yang ada dari repositori:
Tambahkan baris
ke file
.gitignore
, yang dapat ditemukan di tingkat atas repositori Anda (atau dibuat jika belum ada di sana). Anda dapat melakukan ini dengan mudah dengan perintah ini di direktori teratasKemudian
sumber
-exec
akan diluncurkangit-rm
sekali untuk setiap file .DS_Store, sementaraxargs
akan meletakkan semua jalur pada satu baris perintah. Kebanyakan saya lebih sukaxargs
karena saya tidak perlu khawatir melarikan diri banyak karakter khusus..DS_Store
untuk.gitignore
bekerja secara rekursif? Yaitu, apakah itu akan diabaikansome/level/of/folders/.DS_Store
juga?Menggabungkan jawaban benzado dan webmat, memperbarui dengan
git rm
, tidak gagal pada file yang ditemukan tidak dalam repo, dan menjadikannya dapat di-paste secara umum untuk setiap pengguna:sumber
~/.gitignore
sebagai global tidak termasuk file saya sangat menyebalkan . Ada file yang ingin saya kecualikan dari direktori home saya yang tidak ingin saya abaikan secara global. Saya menggunakan~/.gitexcludes
sebaliknya melalui arahan yang sama:core.excludesfile
Solusi terbaik untuk mengatasi masalah ini adalah dengan mengabaikan file-file ini dari semua git repo di sistem Anda. Ini dapat dilakukan dengan membuat file global gitignore seperti:
Menambahkan Aturan untuk mengabaikan file seperti:
Sekarang, tambahkan file ini ke konfigurasi global git Anda:
Edit:
Dihapus Ikon karena mereka mungkin perlu berkomitmen sebagai aset aplikasi.
sumber
Dalam beberapa situasi Anda mungkin juga ingin mengabaikan beberapa file secara global. Bagi saya, .DS_Store adalah salah satunya. Begini caranya:
(Atau file apa pun pilihan Anda)
Kemudian edit file seperti .gitignore repo. Perhatikan bahwa saya pikir Anda harus menggunakan jalur absolut.
sumber
Jika Anda tidak dapat menghapus file karena mereka memiliki perubahan penggunaan bertahap:
sumber
Buka terminal dan ketik "cd <ProjectPath>"
Hapus file yang ada:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
Tambahkan ini
.DS_Store
ketik "ctrl + x"
Ketik "y"
Masuk untuk menyimpan file
git add .gitignore
git commit -m '.DS_Store removed.'
sumber
nano .gitignore
membuat file jika tidak ada, perintah ini harus dijalankan dari folder root proyekJawaban pilihan teratas memang luar biasa, tetapi membantu pemula seperti saya, berikut adalah cara membuat file .gitignore, mengeditnya, menyimpannya, menghapus file yang mungkin sudah Anda tambahkan ke git, lalu mendorong file ke Github.
Buat file .gitignore
Untuk membuat file .gitignore, Anda bisa hanya
touch
file yang membuat file kosong dengan nama yang ditentukan. Kami ingin membuat file bernama .gitignore sehingga kami dapat menggunakan perintah:touch .gitignore
Abaikan file
Sekarang Anda harus menambahkan baris yang memberitahu git untuk mengabaikan file DS Store ke .gitignore Anda. Anda dapat menggunakan editor nano untuk melakukan ini.
nano .gitignore
Nano itu baik karena itu berisi instruksi tentang cara keluar dari situ. ( Ctrl- Ountuk menyimpan, Ctrl- Xuntuk keluar)
Salin dan tempel beberapa ide dari inti Github ini yang mencantumkan beberapa file umum yang harus diabaikan. Yang paling penting, untuk menjawab pertanyaan ini, adalah:
# Adalah komentar, dan akan membantu Anda mengatur file Anda seiring bertambahnya.
Ini artikel Github juga memiliki beberapa ide umum dan pedoman.
Hapus file yang sudah ditambahkan ke git
Akhirnya, Anda harus benar-benar menghapus file DS Store dari direktori Anda.
Gunakan perintah hebat ini dari jawaban pilihan teratas. Ini akan melalui semua folder di direktori Anda, dan menghapus file-file itu dari git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Dorong .gitignore hingga Github
Langkah terakhir, Anda harus benar-benar melakukan file gitignore Anda.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
sumber
Saya harus mengubah git-rm ke git rm di atas untuk membuatnya bekerja:
sumber
hapus menggunakan
git-rm
, dan kemudian tambahkan .DS_Store.gitignore
untuk menghentikannya ditambahkan lagi. Anda juga dapat menggunakan blueharvest untuk menghentikan mereka dibuat secara bersamaansumber
Jika Anda ingin menghapus file DS_Store ke setiap folder dan subfolder:
Dalam hal DS_Store sudah berkomitmen:
Abaikan mereka dengan:
sumber
Berikut ini bekerja paling baik untuk saya. Menangani file yang tidak cocok, dan file dengan modifikasi lokal. Sebagai referensi, ini ada di sistem Mac 10.7 yang menjalankan git 1.7.4.4.
Temukan dan hapus:
Saya juga secara global mengabaikan .DS_Store di semua repositori dengan menetapkan core.excludesfile global.
Pertama, buat file (jika belum ada):
Kemudian tambahkan baris berikut dan simpan:
Sekarang konfigurasikan git untuk menghormati file secara global:
sumber
Gunakan perintah ini untuk menghapus file yang ada:
Lalu tambahkan
.DS_Store
ke.gitignore
sumber
Saya menemukan bahwa baris berikut dari snipplr paling baik menghapus semua
.DS_Store
, termasuk yang memiliki modifikasi lokal.--cached
Opsi, simpan lokal Anda.DS_Store
karena akan direproduksi pula.Dan seperti disebutkan di atas, tambahkan
.DS_Store
ke file .gitignore pada root proyek Anda. Maka itu tidak akan lagi Anda lihat (dari repo).sumber
Saya agak terlambat ke pesta, tapi saya punya jawaban yang bagus. Untuk menghapus file .DS_Store, gunakan perintah berikut dari jendela terminal, tetapi berhati-hatilah menghapus file dengan 'find'. Menggunakan nama tertentu dengan opsi -nama adalah salah satu cara yang lebih aman untuk menggunakannya:
Anda dapat mengabaikan "-delete" jika Anda hanya ingin daftar mereka sebelum dan sesudah. Itu akan meyakinkan Anda bahwa mereka pergi.
Sehubungan dengan saran ~ / .gitignore_global: hati-hati di sini. Anda ingin menempatkan file yang bagus ke .gitignore di tingkat atas setiap workarea dan komit, sehingga siapa pun yang mengkloning repo Anda akan mendapatkan manfaat dari penggunaannya.
sumber
Ini akan berhasil:
Ini menghapus semua file yang namanya diakhiri dengan
.DS_Store
, termasuk._.DS_Store
.sumber
"*.DS_Store"
, agar tanda bintang dilewatkan kefind
bukannya diperluas oleh shell.Untuk beberapa alasan tidak satu pun di atas berfungsi pada mac saya.
Solusi saya adalah dari terminal run:
Kemudian jalankan perintah berikut:
sumber
sumber
Saat menginisialisasi repositori Anda, lewati perintah git yang berisi
dan itu seharusnya tidak menjadi masalah.
sumber
Ini bekerja untuk saya, kombo dua jawaban dari atas:
sumber
Hapus file yang diabaikan:
(.DS_Store)
sumber
Ada beberapa solusi untuk menyelesaikan masalah ini. Untuk menghindari membuat file .DS_Store, jangan gunakan OS X Finder untuk melihat folder. Cara alternatif untuk melihat folder adalah dengan menggunakan baris perintah UNIX. Untuk menghapus file .DS_Store, produk pihak ketiga yang disebut DS_Store Terminator dapat digunakan. Untuk menghapus file .DS_Store dari seluruh sistem, perintah UNIX shell dapat digunakan. Luncurkan Terminal dari Aplikasi: Utilitas Pada UNIX shell prompt masukkan perintah UNIX berikut: sudo find / -name ".DS_Store" -depth -exec rm {} \; Saat diminta kata sandi, masukkan kata sandi Administrator Mac OS X.
Perintah ini adalah untuk menemukan dan menghapus semua kemunculan .DS_Store mulai dari root (/) dari sistem file melalui seluruh mesin. Untuk mengkonfigurasi perintah ini agar dijalankan sebagai tugas terjadwal, ikuti langkah-langkah di bawah ini: Luncurkan Terminal dari Aplikasi: Utilitas Pada prompt UNIX shell masukkan perintah UNIX berikut:
sudo crontab -e Saat diminta kata sandi, masukkan kata sandi Administrator Mac OS X. Setelah di vi editor tekan huruf I pada keyboard Anda sekali dan masukkan yang berikut ini:
15 1 * * * root find / -name ".DS_Store" -depth -exec rm {} \;
Ini disebut entri crontab, yang memiliki format berikut:
Minute Hour DayOfBulan Bulan DayOfWeek Perintah Pengguna.
Entri crontab berarti bahwa perintah akan dieksekusi oleh sistem secara otomatis pada pukul 1:15 setiap hari oleh akun yang disebut root.
Perintah dimulai dari find all to. Jika sistem tidak berjalan, perintah ini tidak akan dijalankan.
Untuk menyimpan entri, tekan tombol Esc sekali, lalu secara bersamaan tekan Shift + z + z.
Catatan: Informasi dalam Langkah 4 hanya untuk editor vi.
sumber
tambahkan ini ke file .gitignore Anda
simpan ini dan buat komit
dan sekarang Anda mengabaikan ini untuk semua komitmen Anda
sumber
buat
.gitignore
file menggunakan perintahtouch .gitignore
dan tambahkan baris berikut di dalamnya
simpan
.gitignore
file dan kemudian dorong ke repo git Anda.sumber
Cara terbaik untuk menyingkirkan file ini selamanya dan tidak perlu khawatir lagi adalah
buat file global .gitignore:
echo .DS_Store >> ~ / .gitignore_global
Dan beri tahu git bahwa Anda ingin menggunakan file ini untuk semua repositori Anda:
git config --global core.excludesfile ~ / .gitignore_global Dan itu dia! .DS_Store keluar dari jalan Anda.
sumber
Tidak perlu menghapus
.DS_STORE
secara lokalCukup tambahkan ke
.gitignore
filePerintah
nano .gitignore
.DS_Store
Kemudian klikCTRL+X > y > Hit Return
git status
Untuk melihat perubahan terakhir Andagit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master
sumber