Saya mengerti bahwa file .gitignore menyelubungi file yang ditentukan dari kontrol versi Git. Saya memiliki proyek (LaTeX) yang menghasilkan banyak file tambahan (.auth, .dvi, .pdf, log, dll) saat dijalankan, tetapi saya tidak ingin mereka dilacak.
Saya sadar bahwa saya dapat (mungkin harus) membuatnya sehingga semua file tersebut diletakkan di subfolder terpisah dalam proyek, karena saya kemudian bisa mengabaikan folder tersebut.
Namun, apakah ada cara yang layak untuk menyimpan file output di root dari pohon proyek dan menggunakan .gitignore untuk mengabaikan segalanya kecuali file yang saya lacak dengan Git? Sesuatu seperti
# Ignore everything
*
# But not these files...
script.pl
template.latex
# etc...
Jawaban:
sumber
wp/
) Tetapi saya ingin TIDAK mengabaikan beberapa file jauh di folder itu (miswp/path/to/some/location/*
.). Satu-satunya cara saya bisa membuatnya bekerja adalah dengan melakukangit add -f wp/path/to/some/location/*
!*/
pengecualian simont!*/
membuat semua perbedaan dalam upaya sia-sia saya untuk bertengkar.gitignore
file untuk bekerja. Terima kasih banyak.Jika Anda ingin mengabaikan seluruh konten direktori kecuali satu file di dalamnya, Anda bisa menulis sepasang aturan untuk setiap direktori di path file. Misalnya .gitignore untuk mengabaikan folder pippo kecuali dari pippo / pluto / paperino.xml
.gitignore
sumber
foo
danfoo/*
yang tidak sama. Agar ini berfungsi, Anda harus menggunakanfoo/*
untuk folder dasarAnda ingin menggunakan,
/*
bukan*
atau*/
dalam banyak kasusPenggunaannya
*
valid, tetapi bekerja secara rekursif. Itu tidak akan melihat direktori sejak saat itu. Orang merekomendasikan!*/
untuk menggunakan direktori whitelist lagi, tetapi sebenarnya lebih baik memasukkan daftar hitam ke folder tingkat tertinggi/*
Kode di atas akan mengabaikan semua file kecuali untuk
.gitignore
,README.md
,folder/a/file.txt
,folder/a/b1/
danfolder/a/b2/
dan segala sesuatu yang terkandung dalam dua folder lalu. (Dan.DS_Store
dan*.log
file akan diabaikan di folder itu.)Jelas saya bisa melakukan eg
!/folder
atau!/.gitignore
juga.Info lebih lanjut: http://git-scm.com/docs/gitignore
sumber
.DS_Store
file tidak diabaikan, tetapi melalui baris perintah ini bukan masalah. Untuk menyiasati ini, saya harus memindahkan**/.DS_Store
semua aturan di bawah ini./*
itu!/nested/folder/*
(atau setara!/nested/folder
) tanpa melakukan!/nested/
atau!/nested
pertama! (dan mungkin/nested/*
di antaranya). Trik yang perlu diingat adalah jika Anda memasukkan subfolder bersarang dalam daftar putih, Anda harus menghitamkan anak-anak di setiap subfolder, dan daftar hitam itu akan berakhir dengan "slash star" ...Sedikit lebih spesifik:
Contoh: Abaikan semuanya
webroot/cache
- tetapi simpanwebroot/cache/.htaccess
.Perhatikan garis miring (/) setelah
cache
folder:GAGAL
BEKERJA
sumber
sumber
Untuk mengabaikan beberapa file dalam direktori, Anda harus melakukan ini dalam urutan yang benar :
Sebagai contoh, abaikan semua yang ada di folder "aplikasi" kecuali index.php dan folder "config" perhatikan urutannya .
Anda harus meniadakan keinginan yang Anda inginkan terlebih dahulu.
GAGAL
application/*
!application/config/*
!application/index.php
BEKERJA
!application/config/*
!application/index.php
application/*
sumber
git status
untuk memeriksa apakah perubahan Anda.gitignore
berfungsi seperti yang diharapkangit status
tidak mau memberi tahu Anda apa yang dilihatnya dan apa yang diabaikan, lalu bagaimana Anda bisa tahu jika ini berhasil?Anda dapat menggunakan
git config status.showUntrackedFiles no
dan semua file yang tidak terlacak akan disembunyikan dari Anda. Lihatman git-config
detailnya.sumber
Untuk mengecualikan folder dari .gitignore, berikut ini dapat dilakukan.
Ini akan mengabaikan semua file / subfolder di dalamnya
bower_components
kecuali untuk/highcharts
.sumber
Ada banyak pertanyaan serupa tentang ini, jadi saya akan memposting apa yang saya tulis sebelumnya:
Satu-satunya cara saya mendapatkan ini untuk bekerja pada mesin saya adalah melakukannya dengan cara ini:
Perhatikan bagaimana Anda harus secara eksplisit mengizinkan konten untuk setiap level yang ingin Anda sertakan. Jadi jika saya memiliki subdirektori 5 tema yang jauh di bawah, saya masih perlu menjelaskannya.
Ini dari komentar @ Yarin di sini: https://stackoverflow.com/a/5250314/1696153
Ini adalah topik yang bermanfaat:
Saya juga mencoba
dan
**/wp-content/themes/**
atau
/wp-content/themes/**/*
Tidak ada yang berhasil untuk saya. Banyak jejak dan kesalahan!
sumber
Saya punya masalah dengan subfolder.
Tidak bekerja:
Bekerja:
sumber
Saya mencoba semua jawaban seperti yang diberikan di sini di atas, tetapi tidak ada yang berhasil untuk saya. Setelah membaca dokumentasi gitignore (di sini ) saya menemukan bahwa jika Anda mengecualikan folder terlebih dahulu, nama file dalam subfolder tidak diindeks. Jadi jika Anda menggunakan tanda seru setelahnya untuk memasukkan file, itu tidak ditemukan dalam indeks dan dengan demikian tidak termasuk dalam klien git Anda.
Itulah cara menemukan solusinya. Saya mulai dengan menambahkan pengecualian untuk semua subfolder di pohon folder saya agar berfungsi, yang merupakan pekerjaan yang sangat berat. Setelah itu saya dapat memadatkan konfigurasi terperinci ke konfigurasi di bawah ini, yang agak bertentangan dengan dokumentasi ..
Bekerja .gitignore:
Sebagai hasilnya saya lihat di klien git saya bahwa hanya dua file di dalam folder Pro / 3rdparty / domain / modulename / sedang dipentaskan untuk komit berikutnya, dan itulah yang saya cari.
Dan jika Anda perlu memasukkan beberapa subfolder dari folder yang sama maka kelompokkan garis tanda seru di bawah pernyataan kecualikan seperti ini:
Kalau tidak bekerja tidak seperti yang diharapkan.
sumber
Itulah yang berhasil bagi saya, saya hanya ingin melakukan satu plugin Cordova ke repo:
sumber
Saya tahu saya terlambat ke pesta, tapi inilah jawaban saya.
Seperti kata @ Joakim, untuk mengabaikan file, Anda dapat menggunakan sesuatu seperti di bawah ini.
tetapi jika file dengan direktori bersarang, agak sulit untuk secara manual menulis aturan.
Misalnya, jika kita ingin melewatkan semua file dalam suatu
git
proyek, tetapi tidaka.txt
yang berlokasi diaDir/anotherDir/someOtherDir/aDir/bDir/cDir
. Maka, kita.gitignore
akan menjadi seperti iniDi atas diberikan
.gitignore
File yang akan melewati semua dir dan file kecuali!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt
Seperti yang telah Anda catat, sulit untuk mendefinisikan aturan-aturan itu.
Untuk mengatasi rintangan ini, saya telah membuat aplikasi konsol sederhana bernama git-do-not-ign yang akan menghasilkan aturan untuk Anda. Saya telah menginangi proyek di github dengan instruksi terperinci.
Contoh Penggunaan
Keluaran
Ada juga versi web sederhana yang tersedia di sini
Terima kasih.
sumber
Saya memiliki Jquery dan Angular dari bower. Bower memasangnya
Jquery yang diperkecil ada di dalam
dist
direktori dan angular di dalamangular
direktori. Saya hanya perlu file yang diperkecil untuk dikomit ke github. Beberapa mengutak-atik .gitignore dan inilah yang berhasil saya bayangkan ...Semoga seseorang dapat menemukan ini berguna.
sumber
Beginilah cara saya melakukannya:
Gunakan
gig status -u
untuk melihat masing-masing file dalam direktori yanggit status
tidak dilacak secara rekursif - dengan Anda hanya akan melihat folder, yang dapat membodohi Anda dengan berpikir bahwa semua yang ada di dalamnya dilacaksumber
Solusi sederhana jika Anda perlu mengabaikan segalanya kecuali beberapa file dan beberapa folder root :
Keajaiban ada di
/*
(seperti dijelaskan di atas) itu mengabaikan semua yang ada di folder (root) TAPI TIDAK secara rekursif.sumber
Saya juga punya beberapa masalah dengan negasi file tunggal. Saya dapat mengkomitnya, tetapi IDE saya (IntelliJ) selalu mengeluh tentang file yang diabaikan, yang dilacak.
Menampilkan dua file, yang saya kecualikan dengan cara ini:
Pada akhirnya, ini berhasil bagi saya:
Kuncinya adalah negasi dari folder
typo3conf/
terlebih dahulu.Juga, tampaknya urutan pernyataan itu tidak masalah . Alih-alih, Anda perlu meniadakan semua subfolder secara eksplisit, sebelum Anda dapat meniadakan satu file di dalamnya.
Folder
!public/typo3conf/
dan isi folderpublic/typo3conf/*
adalah dua hal berbeda untuk .gitignore.Utas hebat! Masalah ini mengganggu saya untuk sementara waktu;)
sumber
Sejauh ini tidak ada yang berhasil karena saya mencoba menambahkan satu toples dari lib.
Ini tidak berhasil:
Ini berhasil:
sumber
Saya berhasil ini
sumber
Punya masalah yang sama seperti OP tetapi tidak satupun dari 10 jawaban yang dipilih benar-benar berfungsi .
Saya akhirnya menemukan yang berikut ini
Sintaks yang salah:
Sintaks yang benar:
Penjelasan dari halaman manual gitignore :
Contoh yang diperluas:
$ pohon.
$ cat .gitignore
Status $ git --untracked-files --ignored
sumber
Inti
Dan mungkin termasuk:
Referensi
Dari https://git-scm.com/docs/gitignore :
sumber
Sepertinya saya telah menemukan sesuatu yang bekerja untuk saya yang tidak disebutkan orang lain.
Pada dasarnya, tampaknya meniadakan sub-direktori agar tidak diabaikan, Anda harus memiliki dua entri, satu untuk sub-direktori itu sendiri
!subdir/
dan kemudian satu lagi yang mengembang ke semua file dan folder di bawahnya.!subdir/**/*
sumber